/ / Rekursive Auflistung von Verzeichnissen in Matlab [Duplikat] - Matlab

Rekursives Auflisten von Verzeichnissen in Matlab [duplizieren] - Matlab

Ich habe ein Verzeichnis mit 3 Ordnern. Jeder Ordner dieser 3 Ordner hat eine andere Anzahl von Ordnern. Und in jedem Ordner dieser Ordner gibt es eine Liste von Dateien, auf denen ich Code für jede dieser Dateien ausführen möchte. Also zum Beispiel: es ist so: MainFolder hat SubFolder1, SubFolder2. SubFolder1 hat SubSubFolder1, SubSubFolder2, SubSubFolder3. SubFolder2 hat SubSubFolder1, SubSubFolder2. Jeder SunSubFolder verfügt über eine Reihe von Dateien. Ich möchte ein Skript, dass ich es den MainFolder-Pfad geben, und es durchläuft jeden Unterordner und Unterordner und Operationen für die Dateien in diesem Unterordner und speichert den Arbeitsbereich mit dem Namen dieses Unterunterordners. Im obigen Beispiel wird der resultierende Arbeitsbereich nach einer Arbeit an den Dateien im SubSubFolder1 an einem Speicherort mit dem Namen SubSubFolder1.mat gespeichert.

Bitte frage mich, ob mir jemand helfen könnte, da dies für mich ziemlich dringend ist. Vielen Dank für Ihre freundliche Unterstützung und Rücksichtnahme.

Aktualisieren:

Ich habe es getan, aber ein anderes Problem ist entstandenwenn ich auf die Dateien in den SubSubFolders zugreife und versuche, Operation zu machen, sagt es "Die Datei" [00000000] .pgm "konnte nicht geöffnet werden, weil: Keine solche Datei oder Verzeichnis". Wie kann ich dieses Problem lösen?

Das ist mein Code:

D = rdir("Hussein/*/*");           %// List of all sub-directories
for k = 1:length(D)
currpath = D(k).name;                 %// Name of current directory
[pathstr, name, ext] = fileparts(currpath);
%// Operate on all .txt files in currpath
l = dir(fullfile(currpath, "*.pgm")); %// Listing of all relevant files
filenames={l.name}";

nfiles=length(filenames)
%images=zeros(240, 320, 1000);
idx=1;

strtidx=1;
endidx=nfiles;
step=1;

waitbar(0);
for i=strtidx:step:endidx
fn=fullfile("", filenames{i});
tmp=padarray(ut_pgmread(fn), 1, "post");
%figure(1); imagesc(tmp); colormap(jet(4096)); colorbar;

images(:, :, idx)=tmp; idx=idx+1;

waitbar(i/nfiles);
end

close(findall(0,"Tag","TMWWaitbar"));
name="/Volumes/Untitled/work/"+name;
save (name, "-v7.3");

%for m = 1:length(F)
%   currfile = F(m).name;             %// Name of current file

%// Do something with currfile...
%end

%// Write output (if any) in currpath...
end;

Antworten:

3 für die Antwort № 1

Es scheint, dass Sie nach einer rekursiven Version von suchen dir, so könnten Sie das finden verbessert rdir Werkzeug aus dem MATLAB File Exchange nützlich für Ihre Zwecke. Verwenden von erweitert rdirwürde Ihr Code in etwa so aussehen:

%// List all sub-directories under MainFolder recursively
D = rdir("MainFolder***.");             %// List of all sub-directories
for k = 1:length(D)
currpath = D(k).name;                 %// Name of current directory

%// Operate on all .txt files in currpath
F = dir(fullfile(currpath, "*.txt")); %// Listing of all relevant files
for m = 1:length(F)
currfile = F(m).name;             %// Name of current file

%// Do something with currfile...
end

%// Write output (if any) in currpath...
end;