Verfasst am: 06.09.2010, 12:51
Titel: Dateien ohne schleifen aufrufen
Hi mit:
Code:
pathname=uigetdir('c:\');
temp = genpath(pathname);
temppathlist = regexp([temp ';'],'(.*?);','tokens'); % erzeugt Liste mit einzelnen Unterverzeichnissen for i=1:length(temppathlist)
teli=cell2mat(temppathlist{i});
tempfilel = dir(teli); %dir für einzelne Unterverzeichnisse
tempn = {tempfilel.name}; % Liste mit allen Namen in einem Unterverzeichnis for n=1:length(tempn)
a=a+1;
temn=cell2mat(tempn(n));
X=[teli temn];
end end
kann ich über X alle Dateien eines Ordners und seiner Unterordner aufrufen. Aber vielleicht weiss jemand wie das schneller (mit weniger Schleifen geht)? Als nächstes käm ja noch eine if abfrage für die richtige Endung...
Ups,
a ist ein Überrest weil ich die Dateinamen mit Pfadangabe in einer Liste speichern wollt. Das hat allerdings nicht funktioniert und ist auch nicht so zwingend.
Ich möchte alle Dateien eines Ordners und seiner Unterordner (X) aufrufen und 1. gucken ob es Bilder sind (Endung .jpg . tif .gif steht allerdings auch noch nicht) und diese dann aufrufen (imread).
Verfasst am: 06.09.2010, 13:57
Titel: Re: Dateien ohne schleifen aufrufen
Hallo Thomas,
Du kannst mit CELL2MAT deutlich sparsamer umgehen.
Ich finde die Namen der Variablen ausgesprochen verwirrend: temp, teli, temn, tempfilel, a, X.
Ich versuche es deshalb einfach mal ganz neu:
Code:
PathName = uigetdir('C:\');
if ~ischar(PathName), return; end% Give a chance to cancel ever!
PathDir = dir(PathName);
% Get list of files as {N x 1} cell string including the path:
FileList = strcat(fullfile(PathName, filesep), ... {PathDir(~[PathDir.isdir]).name});
% Get list of subfolders, ignore folders starting with '.':
SubfolderList = {PathDir([PathDir.isdir]).name};
SubfolderList(strncmp(SubfolderList, '.', 1)) = [];
Die Werte in FileExt sind dabei falsch, wenn der Pfad einen Punkt enthält und das File keine Extension hat! Allerdings ist dann "isPicture" richtigerweise FALSE, sodass das hier nicht gefährlich ist.
Sicherer wäre es aber, FILEPARTS in einer Schleife aufrufen zu lassen. Ich habe mir übrigens ein FILEPARTS geschrieben, dass gleich Cell Strings akzeptiert - sehr zu empfehlen!
ja, das Programm sucht nur in der ersten Unterordnerhierarchie. Da hatte ich Dich falsch verstanden.
ja, das ist ein Fehler:
FileList = cat(1, FileList,...
Besser:
FileList = cat(2, FileList,...
Um alle Ordner zu durchsuchen muss das Programm sich rekursiv aufrufen. Aber schau doch mal in ther Thread, den denny empfohlen hat.
Gruß, Jan
Einstellungen und Berechtigungen
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
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.