2016-07-11 10 views
0

Ich habe sowohl einen Hauptcode und eine Funktion, die Daten aus einer .dat-Datei importiert und ich möchte eine Menge Fälle importieren und daher habe ich mehrere Verzeichnisse erstellt, um die Dateien zu strukturieren. HierMatlab fopen Pfad zu Variable

ist der relevante Teil der Funktion Ich verwende:

function [time_,cm,cd_,cl,clf1,clr] = importcd2(filename, startRow, endRow) 

formatSpec = '%7s%33s%24s%24s%24s%s%[^\n\r]'; 

%% Open the text file. 
fileID = fopen(filename,'r'); 

textscan(fileID, '%[^\n\r]', startRow(1)-1, 'ReturnOnError', false); 

Und dann, wenn ich die Funktion vom Hauptcode nennen will, verwende ich:

[a,~,b,~,~,~] = importvar('/folder1/folder2/folder3/folder4/folder5/file1.dat', 1, inf); 

In welche a und b sind die Variablen, die ich aus der .dat-Datei exportieren möchte. Ich möchte die Funktion so ändern, dass fopen einen ganzen Pfad öffnen kann und nicht nur die ID der Datei (file1.dat), weil ich lieber einige Verzeichnisse als 30 .dat Dateien oder mehr im dasselbe Verzeichnis. Ist es möglich? Meine Frage ist anders als How can I load 100 files with similar names and/or string in just one step in MATLAB?

Vielen Dank im Voraus!

+0

Mögliche Duplikat [Wie kann ich 100 Dateien mit ähnlichen Namen laden und/oder Zeichenfolge in nur einem Schritt in MATLAB?] (http://stackoverflow.com/questions/15366374/how-can-i-load-100-files-mit-similar-names-and-or-string-in- just-one-step-in-ma) – GameOfThrows

+0

Wofür ist formatSpec definiert? –

+0

@MatthiasW. Es wird automatisch von MATLAB definiert, um die Werte entsprechend dem Format der .dat-Datei zu extrahieren. –

Antwort

0

Sie können über den Befehl dir alle DAT-Datei in den Ordner erhalten, dann for Schleife verwenden, um alle von ihnen zu gehen über

function [time_,cm,cd_,cl,clf1,clr] = importcd2(dirname, startRow, endRow) 
DatFiles = dir([dirname filesep '*.dat']); 

for k=1:numel(DatFiles) 
    fileID = fopen(DatFiles(k).Name,'r'); 
    ... 
end