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

In einer function Pfad als Variable übergeben - Wie?

 

MaraBelle
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.02.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 19.03.2015, 15:50     Titel: In einer function Pfad als Variable übergeben - Wie?
  Antworten mit Zitat      
Hallo Zusammen!
Ich möchte Messdaten in mehreren Unterordnern auswerten. Ich habe für jeden Tag einen Ordner (z.B. 20150317), in dem je 13 Files liegen, die in meiner function ausgewertet werden sollen. Damit es variabel bleibt und ich ggf. mit einem übergeordneten m-file mehrere Auswertungen in Folge vornehmen kann, möchte ich den Namen des zu öffnenden Unterordners mit der function als Variable übergeben:

Interpolieren ('20150317');

Bisher sieht mein Code so aus:
Code:

function Interpolieren (Inputpath)
    measurepath ='Inputpath'
    measurepath=cellstr(measurepath)
    cd(measurepath);
    file1='\Strahlung.txt';
    file2='\Außentemperatur.txt';

...

    fid=fopen(file1);
    %Date   Daytime Unixtime [s]    Time [s]   Irradiation [W/m^2]
    daten1=textscan(fid,'%s  %s  %f  %f  %f','HeaderLines',1,'Delimiter','\t','MultipleDelimsAsOne',1);
    fclose(fid);

    fid=fopen(file2);
...

end
 

Wenn die zu öffnenden Dateien direkt im workspace liegen (dann ohne cd), funktioniert der Code einwandfrei.
Ich habe es mit mehreren Varianten versucht (Umwandlung in string, ohne Anführungsstriche, mit addpath etc.), es scheitert immer wieder daran, dass ich die Variable nicht übergeben bekomme bzw. nicht richtig aufrufe. Ich weis aber dass das vom Prinzip her gehen muss.
Ich hoffe einer von euch findet meinen Denkfehler oder hat eine bessere Idee, wie ich das lösen kann.

Zuletzt bearbeitet von MaraBelle am 19.03.2015, 17:25, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.03.2015, 17:20     Titel:
  Antworten mit Zitat      
Hallo,

bitte die Code-Umgebung verwenden.

Ich halte Verzeichniswechsel für keine gute Idee. Stattdessen würde ich den vollen Dateinamen angeben.

Code:
file1=fullfile(InputPath, 'Strahlung.txt');

etc.

Wenn du InputPath als Variable verwenden willst, sollten jedenfalls ' ' gesetzt werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
MaraBelle
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.02.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 19.03.2015, 17:47     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:

bitte die Code-Umgebung verwenden.

Sollte jetzt sichtbar sein, hatte noch nicht rausgefunden, wo das geht...
Harald hat Folgendes geschrieben:

Ich halte Verzeichniswechsel für keine gute Idee. Stattdessen würde ich den vollen Dateinamen angeben.
Code:
file1=fullfile(InputPath, 'Strahlung.txt');


Ich halte auch nichts von Verzeichniswechsel, aber das Zusammenbasteln des kompletten Pfades funktionierte bei mir nicht, was aber vermutlich daran lag, wie ich es aufgerufen hatte. Die Funktion fullfile kannte ich noch nicht, ist aber sehr hilfreich. Aufgrund der Fehlermeldung, die ich dann bekomme, habe ich meinen eigentlichen Fehler rausgefunden:
>>
Reference to a cleared variable Inputpath.
Error in Interpolieren (line 12)
file1=fullfile(Inputpath, '\Strahlung.txt');
<<
Da ich meinen Code gewohnheitsmäßig mit
Code:

angefangen habe, wird die Variable gelöscht und ist nicht mehr vorhanden Smile Ein blöder Fehler...
Hatte mich schon gewundert, warum die Variable nicht im workspace rechts auftaucht.

PS: Sorry für die falsche Verwendung des Begriffes workspace bei meinem ersten post, dort meinte ich den current folder.
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 - 2025 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.