WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

findstr / strfind - Probleme bei Benutzung in Funktion?

 

jrw84
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 28.08.09
Wohnort: Koeln
Version: ---
     Beitrag Verfasst am: 28.08.2009, 11:15     Titel: findstr / strfind - Probleme bei Benutzung in Funktion?
  Antworten mit Zitat      
Hallo Zusammen!

Ich habe eine, vermutlich etwas dumme, Frage bezueglich der Verwendung der findstr Funktion. Zumindest laesst die profane Natur des Problems darauf schliessen, dass die Loesung nicht so kompliziert ist, aber ich komme partout nicht dahinter. Also:

Ich schreibe gerade eine simple Funktion, die Ordnernamen in Datei und Pfad zerlegen soll. Das ganze soll Teil einer umfangreicheren Funktion werden und eigentlich nur ne Minute dauern...denkste. Hier erstmal der Code:

Code:
function [ finame , pathname ] = randomfunctionname ( inputfile )

if isunix
delim = findstr(inputfile,'/');
elseif ispc
delim = findstr(inputfile,'\');
else error('OSname unavailable!');
end

...


Dann kommt der rest der Funktion (zwei Zeilen), die ich jetzt grad nicht abtippen will (sitze an nem Hollaendischen PC mit seltsamem Tastaturschema), Matlab laeuft hier auf meinem Laptop (kein Internet).

Inputfilename sind beispielsweise Sachen wie '/filesystem/home/eeg/datenset1.cab'

Das Problem ist, dass findstr mir eine leere Matrix als "delim" ausgibt, also delim = [], so dass ich nicht drauf zurueckgreifen kann in der weiteren Funktion. Bei strfind das gleiche.

Wenn ich die ganze Sache per Commandline mache, funktioniert sie einwandfrei. Von daher vermute ich, dass es sich um was echt daemliches handelt und ich einfach auf dem Schlauch stehe.

Wie auch immer, es waere super, wenn mir jemand helfen koennte.

Vielen Dank schonmal,
jrw
Private Nachricht senden Benutzer-Profile anzeigen


Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2009, 11:26     Titel:
  Antworten mit Zitat      
vielleicht habe ich die Problemstellung nicht in seiner ganzen Tragweite durchschaut...

ich würde das so lösen

Code:

string  = '/filesystem/home/eeg/datenset1.cab' ;

slash_positionen    = findstr(string,'/');

path    = string(1:max(slash_positionen))
datei   = string(max(slash_positionen)+1:length(string))
 


bringt doch das gewünschte ergebnis oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
jrw84
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 28.08.09
Wohnort: Koeln
Version: ---
     Beitrag Verfasst am: 28.08.2009, 11:32     Titel:
  Antworten mit Zitat      
Ok, schoen zu sehen, dass es noch jemand genauso programmiert haette, wie ich's gemacht hab Wink

Das Problem ist aber:

In der Commandline funktioniert das hier:
Code:
slash_positionen    = findstr(string,'/');


In der Funktion hingegen bekomme ich aber fuer slash-positionen eine leere Matrix zurueck, weswegen das da eben nicht funktioniert. Question
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.08.2009, 11:35     Titel:
  Antworten mit Zitat      
Um zu entscheiden, ob vom System / oder \ verwendet wird, könnte man auch

Code:


verwenden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2009, 11:37     Titel:
  Antworten mit Zitat      
hast du vielleicht eine Unix-Maschine und verwendest einen PC-Test-String ?

dann bekommst du natürlich ne leere Variable delim...

andere Fehler kann ich mir nicht mehr vorstellen... sorry
Private Nachricht senden Benutzer-Profile anzeigen
 
jrw84
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 28.08.09
Wohnort: Koeln
Version: ---
     Beitrag Verfasst am: 28.08.2009, 11:44     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Um zu entscheiden, ob vom System / oder \ verwendet wird, könnte man auch

Code:


verwenden.

Grüße,
Harald

Ah, huebsch, das spart mir einige Zeilen, dann denken wieder alle, ich kann programmieren Wink Danke dafuer!

@Idefix: JA, das war das Problem... hier auf dem Laptop laeuft Windows, ich programmiere jedoch fuer mein Unix-System...........

Ich wusste, dass es was daemliches sein muss. Embarassed Embarassed Embarassed

Danke euch und schoenen Tag noch![/quote]
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 28.08.2009, 11:44     Titel:
  Antworten mit Zitat      
Hallo,

sehr merkwürdig, dass von der Kommandozeile und in der Funktion etwas unterschiedliches passiert. Grund ist normalerweise
- eine Variable, die genauso heisst (hier unwahrscheinlich)
- eine Funktion an der Stelle "rumliegt", die genauso heisst aber was anderes macht (hier hilft Debugger + die Funktion "which").

And now to something completely different: wie wäre es mit der Funktion fileparts?

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2009, 11:49     Titel:
  Antworten mit Zitat      
hmm... eigentlich... wenn ichs mir so überlege....

guter Tipp *LOL*

manchmal sollte man den eigenen Erfindergeist eben doch zügeln und einfach das bestehende Wissen anwenden ;-)
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 31.08.2009, 09:44     Titel:
  Antworten mit Zitat      
Hi,

Ich markiere dann mal die Frage als beantwortet? Wink

Ciao,
Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.