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

Einlesen von txt-Dateien aus mehreren Ordner + div. Perioden

 

meteoGast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2017, 11:26     Titel: Einlesen von txt-Dateien aus mehreren Ordner + div. Perioden
  Antworten mit Zitat      
Hallo!

Ich bin schon seit längerer Zeit auf der Suche, wie ich txt-files aus verschiedenen Ordnern einlesen kann, wobei hierbei nur verschiedene Perioden eingelesen werden sollten.

Die Inputfiles haben folgendes Format
%Datetime Firn Ice Rock Snow Soil Total
01.10.2013-00:00 -0.0000 -0.0000 -0.0000 -0.0000 0.1500 0.1500
wobei nur die erste und letzte Spalte relevant sind (also Datetime und Total).

Die Ordner haben folgendes Format name_(fortlaufende_Nummer).

Anbei mein bisher aufgesetzter Quellcode:

Code:

function [Y]=modell_MulObj(x)
% diese Funktion berechnet mehrere Modell-Performance Maße
% es werden die Ergebnisse aus der Clusterrechnung eingelesen und gegen die
% gemessenen Werte evaluiert, hierbei werden die Winterhalbjahre nicht
% berücksichtigt
% dh. betrachtete Perioden 1.05 bis 30.09. des jeweiligen Jahres
% Output sind die Performancemaße

M = 31; %Anzahl der Parameter
x = x(:);
if ~isnumeric(x); error('input argument "param" must be numeric');
end
if length(x)~=M; error('input argument "param" must have %d componentes',M);
end

% Definition der zu evaluierenden Perionden
% 1. Mai 2014 bis 30. September 2014
% 1. Mai 2015 bis 30. September 2015
% 1. Mai 2016 bis 30. September 2016

% sdatelim1 = [datenum(2014,05,01) datenum(2014,09,30)];
% sdatelim2 = [datenum(2015,05,01) datenum(2015,09,30)];
% sdatelim3 = [datenum(2016,05,01) datenum(2016,09,30)];

sdatelim1 = [datenum(2014,05,01) datenum(2014,10,01)];
sdatelim2 = [datenum(2015,05,01) datenum(2015,10,01)];
sdatelim3 = [datenum(2016,05,01) datenum(2016,10,01)];


% ermitteln der Anzahl an einzulesenden Inputfiles
D = dir('C:\Users\heute\results\model_standalone\');
Num = length(D);

for i = 1:Num;

   
   
   
end

% Berechnung der Performancemaße
% NSE (Nash-Sutcliffe Efficiency)
f(1) = 1-cov(Qs - Qo)/var(Qo);
% RMSE
f(2) = sqrt(mean((Qs - Qo).^2));
% BIAS
f(3) = abs(mean(Qs - Qo));
 



modell_MulObj sollte nun aus zwei mal 5000 und einmal 155.000 Inputfiles jeweils die Performance-Maße für die Sommerhalbjahre erstellen und in Matrizen YA, YB und YC abspeichern. Pro Inputfile sollte für das jeweilige Performance-Maß ein Wert abgespeichert werden. YA sollte schlussendlich 5000 Zeilen und 3 Spalten haben, YB 5000 Zeilen und 3 Spalten und YC 155.000 Zeilen und 3 Spalten.

Aufgerufen wird die Funktion über
YA = modell_MulObj
YB = modell_MulObj
YC = modell_MulObj


Mein Lösungsansatz:
- for Schleife über die Anzahl der in model_standalone abgelegten Ordner
- öffnen der einzelnen Ordner
- einlesen des Files im jeweiligen Ordner
- Berechnung durchführen
- abspeichern in YA,... je nach getätigtem Aufruf

Wie könnte dies umgesetzt werden?

Danke


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.05.2017, 16:46     Titel: Re: Einlesen von txt-Dateien aus mehreren Ordner + div. Peri
  Antworten mit Zitat      
Hallo meteoGast,

Zitat:
Mein Lösungsansatz:
- for Schleife über die Anzahl der in model_standalone abgelegten Ordner
- öffnen der einzelnen Ordner
- einlesen des Files im jeweiligen Ordner
- Berechnung durchführen
- abspeichern in YA,... je nach getätigtem Aufruf


Das klingt doch ganz gut. Was ist nun genau Deine Frage? Sollen wir Dir eine FOR-Schleife schreiben?
Versuche es erst mal selbst, und wenn ein konkretes Problem auftritt, poste den Code und erklären, was nicht funktioniert.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
meteoGast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2017, 16:24     Titel:
  Antworten mit Zitat      
Hallo Jan,

fein wenn mein Lösungsvorschlag gut klingt, aber wie konkret kann die zeitliche Eingrenzung umgesetzt werden und das Öffnen einzelner files aus unterschiedlichen Verzeichnissen?

Gruß, meteoGast
 
meteoGast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2017, 16:05     Titel: Re: Re: Einlesen von txt-Dateien aus mehreren Ordner + div.
  Antworten mit Zitat      
Hallo,

unten meine Überlegungen zur Umsetzung der Schleife inkl. der zeitlichen Abgrenzung.

Code:

% ermitteln der Länge an einzulesenden Inputfiles
D = dir('C:\Users\heute\results\model_standalone\');
Num = length(D);

% einlesen der Messwerte - Abfluss (vom 1. Oktober 2013 bis 30. September
% 2016)
[DD,MM,YY,hh,mm,seeausfluss]=textread('seeausfluss_13_15.txt','%u %*1c %u %*1c %u %u %*1c %u %f', -1,'delimiter',' ','headerlines',16);
ss=00;
date_seeausfluss=datenum(YY,MM,DD,hh,mm,ss);
Qo = seeausfluss;

for i = 1:Num;
    [Date,QSfirn,QSice,QSrock,QSsnow,QSsoil,Qs]=textread('D\u_results(i)\runoff.txt','%s %f %f %f %f %f %f',-1,'headerlines',1);
    % erzeugen eines Date-Vektors mit der Dimension von QS
    sdatelim_neu = [datenum(2013,10,01,00,00,00) datenum(2016,10,01,00,00,00)];
    dt = 1/24;
    date = sdatelim_neu(1):dt:sdatelim_neu(2);
    date_runoff = transpose(date);
   
    sdatelim1 = [datenum(2014,05,01,00,00,00) datenum(2014,10,01,00,00,00)];
    dt = 1/24;
    sdate_sdatelim1 = sdatelim1(1):dt:sdatelim1(2);
   
    sdatelim2 = [datenum(2015,05,01,00,00,00) datenum(2015,10,01,00,00,00)];
    sdate_sdatelim2 = sdatelim2(1):dt:sdatelim2(2);
   
    sdatelim3 = [datenum(2016,05,01,00,00,00) datenum(2016,10,01,00,00,00)];
    sdate_sdatelim3 = sdatelim3(1):dt:sdatelim3(2);
   
    for k = 1:length(sdate_sdatelim1); a = 1:length(sdate_sdatelim2); b = 1:length(sdate_sdatelim3);
        j = find(date_runoff >= sdate_sdatelim1(k) & date_runoff < sdate_sdatelim1(k)+dt) & find(date_runoff >= sdate_sdatelim2(a) & date_runoff < sdate_sdatelim2(a)+dt) & find(date_runoff >= sdate_sdatelim3(b) & date_runoff < sdate_sdatelim3(b)+dt);
        f(1) = 1-cov(Qs(j) - Qo)/var(Qo);
        f(2) = sqrt(mean((Qs(j) - Qo).^2));
        f(3) = abs(mean(Qs(j)- Qo));
       
       
       
    end

   
end

 


Das Rechnen funktioniert leider nocht nicht, da das Aufrufen der jeweiligen runoff.txt files aus den fortlaufend nummerierten u_results-Ordner nicht läuft. Der textread - Befehl funktioniert auf jeden Fall, wenn man nur ein einzelnes file einliest.

Zusätzlich sollte das Programm automatisch erkennen ob der Aufruf YA = modell_MulObj, YB =... usw. lautet und somit die Matrizen YA, YB und YC gemeinsam ausgeben.

Wie könnte dies in die for-Schleife implementiert werden?

Danke
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.05.2017, 13:11     Titel: Re: Re: Einlesen von txt-Dateien aus mehreren Ordner + div.
  Antworten mit Zitat      
Hallo meteoGast,

Zitat:
unten meine Überlegungen zur Umsetzung der Schleife inkl. der zeitlichen Abgrenzung.

Ich weiß nicht, was "zeitliche Abgrenzung" bedeutet.

Zitat:
Das Rechnen funktioniert leider nocht nicht, da das Aufrufen der jeweiligen runoff.txt files aus den fortlaufend nummerierten u_results-Ordner nicht läuft.

Da kann ich nichts sinnvolles drauf antworten. Bitte zeige die entsprechenden Zeilen und erkläre, was "läuft nicht" explizit bedeutet.

Zitat:
Zusätzlich sollte das Programm automatisch erkennen ob der Aufruf YA = modell_MulObj, YB =... usw. lautet und somit die Matrizen YA, YB und YC gemeinsam ausgeben.

Das ist nicht nachvollziehbar.

Denke daran, dass die Leser im Forum nicht die geringste Ahnung von dem haben, was Du machst. Im gezeigten Code ist nicht ersichtlich, was schon läuft, was noch nicht, und wo Du etwas ändern möchtest.

Ich rate mal wild, dass dies Dir weiter helfen könnte:
Code:
Folder = 'C:\Users\heute\results\model_standalone\';
D = dir(Folder);
Num = length(D);
for iFile = 1:Num
  aFile = fillfile(Folder, D(iFile).name);
  [DD,MM,YY,hh,mm,seeausfluss]=textread(aFile,'%u %*1c %u %*1c %u %u %*1c %u %f', -1,'delimiter',' ','headerlines',16);
  ...
end
 

Falls das hilft, hätte eine Suche im Internet nach "Matlab process sequence of files" geholfen.

Bitte erkläre jetzt nochmal so knapp wie möglich, aber mit allen benötigten Details:
Zitat:
erkennen ob der Aufruf YA = modell_MulObj, YB =... usw. lautet


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
meteoGast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2017, 15:44     Titel: Re: Re: Re: Einlesen von txt-Dateien aus mehreren Ordner + d
  Antworten mit Zitat      
Hallo Jan,

vielen Dank für die Hilfestellung. Tut mir leid, dass ich die Probleme nicht klar auf den Punkt gebracht habe.

Generell sollten aus einem Verzeichnis txt-Dateien eingelesen werden. Alle txt-files haben denselben Namen, liegen aber immer in einem anderen Unterordner, dessen Name sich durch eine fortlaufende Nummer unterscheidet. Der genaue Speicherpfad lautet wie folgt:

C:\Users\heute\results\model_standalone\u_ordnerNr\runoff.txt

Diese txt-Dateien enthalten Simulationsergebnisse, welche mit Messwerten verglichen werden sollten. Aus diesen werden dann NSE, RMSE etc. berechnet um die Performance der einzelnen Modellläufe zu bewerten.
Die Berechnung der einzelnen Maße sollte nur für verschiedene Perioden laufen, also zum Beispiel vom 1. Mai 2013 bis 30. September 2013, 1. Mai 2014 bis 30. September 2014, etc.

Für jedes txt-file sollte schlussendlich aus allen Perioden ein NSE, ein RMSE etc. berechnet werden. Dieser Messwert sollte dann in einer Matrix abgelegt werden. Diese lautet zB YA und sollte dann die folgenden Dimensionen haben: 5000 Zeilen (entspricht der Anzahl der txt-files) und zB 3 Spalten (eine für NSE, eine für RMSE und eine für den BIAS).

1.)
Zitat:
Ich weiß nicht, was "zeitliche Abgrenzung" bedeutet.

verschiedene Zeiträume, habe versucht dies innerhalb einer for-Schleife umzusetzen:

Code:
   sdatelim_neu = [datenum(2013,10,01,00,00,00) datenum(2016,10,01,00,00,00)];
    dt = 1/24;
    date = sdatelim_neu(1):dt:sdatelim_neu(2);
    date_runoff = transpose(date);
   
    sdatelim1 = [datenum(2014,05,01,00,00,00) datenum(2014,10,01,00,00,00)];
    dt = 1/24;
    sdate_sdatelim1 = sdatelim1(1):dt:sdatelim1(2);
   
    sdatelim2 = [datenum(2015,05,01,00,00,00) datenum(2015,10,01,00,00,00)];
    sdate_sdatelim2 = sdatelim2(1):dt:sdatelim2(2);
   
    sdatelim3 = [datenum(2016,05,01,00,00,00) datenum(2016,10,01,00,00,00)];
    sdate_sdatelim3 = sdatelim3(1):dt:sdatelim3(2);
   
    for k = 1:length(sdate_sdatelim1); a = 1:length(sdate_sdatelim2); b = 1:length(sdate_sdatelim3);
        j = find(date_runoff >= sdate_sdatelim1(k) & date_runoff < sdate_sdatelim1(k)+dt) & find(date_runoff >= sdate_sdatelim2(a) & date_runoff < sdate_sdatelim2(a)+dt) & find(date_runoff >= sdate_sdatelim3(b) & date_runoff < sdate_sdatelim3(b)+dt);
        f_1k(k) = 1-cov(Qs(j) - Qo)/var(Qo);
        f_2k(k) = sqrt(mean((Qs(j) - Qo).^2));
        f_3k(k) = abs(mean(Qs(j)- Qo));
       
        f_1a(a) = 1-cov(Qs(j) - Qo)/var(Qo);
        f_2a(a) = sqrt(mean((Qs(j) - Qo).^2));
        f_3a(a) = abs(mean(Qs(j)- Qo));
       
        f_1b(b) = 1-cov(Qs(j) - Qo)/var(Qo);
        f_2b(b) = sqrt(mean((Qs(j) - Qo).^2));
        f_3b(b) = abs(mean(Qs(j)- Qo));
       
        YA = [f_1k, f_2k, f_3k
            f_1a, f_2a, f_3a
            f_1b, f_2b, f_3b];
       
       
    end


Zuerst habe ich hier die einzelnen zeitlichen Grenzwerte definiert und lasse dann die Berechnung von NSE, RMSE und BIAS in einer for-Schleife für die einzelnen Perioden laufen und schreibe dies abschließend in die Matrix YA.

2.)
Zitat:
Das Rechnen funktioniert leider nocht nicht, da das Aufrufen der jeweiligen runoff.txt files aus den fortlaufend nummerierten u_results-Ordner nicht läuft. Da kann ich nichts sinnvolles drauf antworten. Bitte zeige die entsprechenden Zeilen und erkläre, was "läuft nicht" explizit bedeutet.


Code:
D = dir('C:\Users\heute\results\model_standalone\');
Num = length(D);

for i = 1:Num;
    [Date,QSfirn,QSice,QSrock,QSsnow,QSsoil,Qs]=textread('D\u_ordner(i)\runoff.txt','%s %f %f %f %f %f %f',-1,'headerlines',1);

end
 


Das sind die Zeilen, die ich geschrieben habe, um das jeweilige file aus den einzelnen u_ordner einzulesen. Das Problem liegt daran, dass die einzelnen Unterordner nicht aufgerufen werden können und in weiterer Folge die txt-files nicht eingelsen werden können. Der hier angegebene Speicherpfad stimmt mit dem tatsächlichen Speicherplatz überein, vermut dass das Problem innerhalb des textread-Befehls liegt?

3.)
Zitat:
Zusätzlich sollte das Programm automatisch erkennen ob der Aufruf YA = modell_MulObj, YB =... usw. lautet und somit die Matrizen YA, YB und YC gemeinsam ausgeben.


Generell wird die im modell_MulObj.m geschriebene Funktion:
function [Y]=modell_MulObj
in einem externen Programm mittels Befehl YA = modell_MulObj aufgerufen.

Weitere Aufrufs-Optionen sind YB = modell_MulObj und YC = modell_MulObj.

Der Unterschied zwischen den drei Aufrufen liegt darin, dass in YA 5000 runoff.txt files, in YB weitere 5000 runoff.txt files und in YC 155.000 runoff.txt files ausgewertet werden müssen.

Jetzt sollte innerhalb der Funktion modell_MulObj unterschieden werden ob der Auftruf mit YA = ..., YB = ..., oder YC = ... erfolgt. Hierbei sind dann die entsprechenden Unterordner auszuwählen, die entsprechenden txt-files zu lesen, die Performance-Maße für die jeweiligen Perioden zu ermitteln und die Ergebnisse der jeweiligen Auswertungen sollten dann in die Matrix YA, YB oder YC geschrieben werden.

Dimension von YB (5000 Zeilen, 3 Spalten) und YC (155.000 Zeilen, 3 Spalten).

Der Name des Unterordners in denen das runoff.txt file liegt unterscheidet sich wie folgt:
u_ordner_aNr, u_ordner_bNr, u_ordner_cNr.

Danke
meteoGast
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.05.2017, 14:08     Titel: Re: Re: Re: Einlesen von txt-Dateien aus mehreren Ordner + d
  Antworten mit Zitat      
Hallo meteoGast,

Was ist nun genau Deine Frage?

Zitat:
Der Name des Unterordners in denen das runoff.txt file liegt unterscheidet sich wie folgt:
u_ordner_aNr, u_ordner_bNr, u_ordner_cNr.

Das verstehe ich nicht. Was unterscheidet sie wie?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
meteoGast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2017, 15:17     Titel: Re: Re: Re: Re: Einlesen von txt-Dateien aus mehreren Ordne
  Antworten mit Zitat      
Hallo Jan,

Folgende Fragen:

1.) Wie sollte die for-Schleife gestaltet werden damit für die jeweilige Periode (zB. 1. Mai 2013 bis 30. Sept. 2013, 1. Mai 2014 bis 30. Sept. 2014) aus jedem eingelesene txt-file jeweils ein Wert in die Matrix Y geschrieben wird? Also für das erste runoff.txt ein NSE, ein RMSE und ein BIAS, welcher aus den zwei Perioden ermittelt wurde.

Die von mir gestern angegebene for-Schleife liefert leider keine Matrix YA, welche aus 3 Spalten und 5000 Zeilen besteht. Die Berechnung bricht ab nach:
Code:

for k = 1:length(sdate_sdatelim1); a = 1:length(sdate_sdatelim2); b = 1:length(sdate_sdatelim3);
        j = find(date_runoff >= sdate_sdatelim1(k) & date_runoff < sdate_sdatelim1(k)+dt) & find(date_runoff >= sdate_sdatelim2(a) & date_runoff < sdate_sdatelim2(a)+dt) & find(date_runoff >= sdate_sdatelim3(b) & date_runoff < sdate_sdatelim3(b)+dt);
 




2.) Das Einlesen der txt-files aus den verschiedenen Unterordnern läuft nicht (hier für den Fall das Funktionsaufruf mit YA=... erfolgt):
Code:
D = dir('C:\Users\heute\results\model_standalone\');
Num = length(D);

for i = 1:Num;
    [Date,QSfirn,QSice,QSrock,QSsnow,QSsoil,Qs]=textread('D\u_ordner_a(i)\runoff.txt','%s %f %f %f %f %f %f',-1,'headerlines',1);

end


Wo könnte da das Problem liegen? Der Speicherpfad passt, aber es funktioniert nicht der Aufruf der einzelnen Unterordner, welche sich durch eine fortlaufende Nummer unterscheiden.

3.) Je nach Variante des Funktionsaufrufes sollten eine unterschiedliche Anzahl/Art von Unterordnern abgearbeitet werden. Der Name der einzelnen Ordner unterscheidet sich wie folgt: u_ordner_a bzw. u_ordner_b, bzw. u_ordner_c und nach dem a, b, c, erweitert mit einer fortlaufenden Nummer. In weiterer Folge sollten die Ergebnisse entweder in die Matrix YA geschrieben werden, wenn die u_ordner_a abgearbeitet werden oder in die Matrix YB oder eben in YC.


Wie kann die Umsetzung erfolgen, um in Abhängigkeit vom Funktionsaufruf die gewünschten Matrizen zu generieren? (Der Unterschied liegt hier nicht in den Rechenoperationen, sondern in der Anzahl der abzuarbeitenden Daten und der Länge der Output-Matrizen).

Viele Grüße
 
meteoGast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.05.2017, 12:10     Titel: Re: Re: Re: Re: Einlesen von txt-Dateien aus mehreren Ordne
  Antworten mit Zitat      
Hallo,

für das Einlesen von txt-files mit denselben Namen aus verschiedenen Unterordnern, innerhalb von model_standalone, bin ich auf folgende Info gestoßen:

http://etools.fernuni.ch/matlab/mat.....rinteraction_readdir.html

Dies versuchte ich wie folgt umzusetzen:

Code:

pathname = 'C:\Users\heute\results\model_standalone\';

Mdir = dir(pathname);
nbentries = size(Mdir, 1);
Mfiles = [];
for entry_i = 1:nbentries
  if Mdir(entry_i).isdir == false

    filename = Mdir(entry_i).name;
    if filename(1) ~= '.'
      [p, n, ext] = fileparts(filename);
      if strcmpi(ext, '.txt')
        Mfiles = strvcat(Mfiles, filename);
      end
    end
  end
end
nbfiles = size(Mfiles, 1);

for iFile = 1:length(Mfiles);
    [Date,QSfirn,QSice,QSrock,QSsnow,QSsoil,Qs]=textread(Mfiles(iFile),'%s %f %f %f %f %f %f',-1,'headerlines',1);
end
 


Das Programm läuft zwar ohne Fehlermeldungen aber es werden die txt-files nicht eingelesen.

Für den Beispielfall, dass im Ordner model_standalone 2 Unterordner mit den Namen results1 bzw. results2 liegen und innerhalb dieser jeweils ein txt-file mit den Namen runoff.txt wird folgendes ausgegeben:

Mdir: 2x1 struct
Mfiles: []
entry_i: 1x1 double mit den Inhalt von 2 (also die Anzahl der Unterordner)
i: 1X1 double mit INhalt 2
nbentries: 1x1 double mit Inhalt 2
nbfiles: 1x1 double mit 0
pathname: char

Das Programm findet hier bereits schon keine txt-files, da ja ansonsten bereits in Mfiles was enthalten sein müsste und ebenso die Variable filename einen Inhalt aufweisen sollte.

Wie kann man dass Problem beheben, dass alle txt-files aus den einzelnen Unterordnern eingelesen werden?

Danke
 
meteoGast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2017, 10:00     Titel: Re: Re: Re: Re: Einlesen von txt-Dateien aus mehreren Ordne
  Antworten mit Zitat      
Hallo,

hat jemand eine Idee, warum das Einlesen der einzelnen .txt-files aus den verschiedenen Unterordnern nicht funktioniert? (Details siehe post vom 29.5.2017/12:10).

Danke
meteoGast
 
meteoGast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2017, 11:25     Titel: Re: Re: Re: Re: Einlesen von txt-Dateien aus mehreren Ordner
  Antworten mit Zitat      
Hallo,

das Einlesen der txt-files funktioniert weiterhin noch nicht. Die erste for-Schleife im Beitrag von 29.5.2017, kann auf die txt-files nicht zugreifen. Es werden nur die Unterordner innerhalb von model_standalone gefunen, jedoch nicht die in diesen Unterordnern enthaltenen Dateien.

Evtl. hat jemand eine Idee wo hier der Fehler liegt oder wie man es anderst sinnvoller lösen kann?

Lg
meteoGast
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.06.2017, 20:07     Titel: Re: Re: Re: Re: Einlesen von txt-Dateien aus mehreren Ordner
  Antworten mit Zitat      
Hallo meteoGast,

Der Code liest keine Dateien aus Unterordnern ein, weil er das auch gar nicht versucht. Es ist etwas müsam sich aus diesem langen Thread heraus zu suchen, welches Problem Du hier lösen möchtest. Hast Du eine moderne Matlab-Version? Dann:
Code:
pathname = 'C:\Users\heute\results\model_standalone\';
FileList = dir(fullfile(pathname, '**', 'runoff.txt'));
for iFile = 1:numel(FileList)
  aFile = fullfile(FileList(iFile).folder, FileList(iFile).name);
  ... Import the text file here
end

Wenn Du eine Matlab Version vor 2016b hast, findest Du im FileExchange einige "recursive dir" Lösungen.

Gruß, Jan
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.