Verfasst am: 20.04.2017, 14:31
Titel: Alle Matfiles aus Unterordnern laden
Huhu und Hilfe ,
ich steh grad völlig aufm Schlauch
Ich möchte über eine GUI einen Ordner auswählen. In diesem Ordner befinden sich widerum Unterordner, in denen sich die .mat files befinden mit denen ich arbeiten möchte.
Ich starte das Ganze dann folgendenmaßen:
Code:
%erst mal Odnername speichern
[Foldernames] = uigetdir();
% nach ';' suchen ,weil so die verschiedenen Unterordner getrennt sind
temp = [0findstr(Foldernames, ';')];
% in einer for-Schleife in einen cell-array speichern for idx = 1:(length(temp)-1)
list(idx) = { Foldernames(temp(idx)+1:temp(idx+1)-1)};
end
Jetzt hab ich also einen wunderschönen 1xirgendwas cell mit meinen Ordnernamen. Jetzt möchte ich gerne aus jedem der list(i)-Ordner bitte alls .matfiles geladen haben.. allerdings bin ich daran gescheitert, dass dir() und der/die/das cell sich nicht verstehen.. also hab ich es versucht in einen string umzuwandeln. Komme aber damit auch nicht weiter.. Ich stehe gerade furchtbar auf dem Schlauch und habe leider keine andere Baustelle um mich abzulenken..
leider bietet
dir
keine rekursive Möglichkeit in Unterordnern nach bestimmten Endungen zu suchen.
Eine sehr nützliche Funktion wurde hier beschrieben und nachfolgend kopiert
Code:
function fileList = getAllFiles(dirName, fileExtension, appendFullPath)
dirData = dir([dirName '/' fileExtension]); %# Get the data for the current directory
dirWithSubFolders = dir(dirName);
dirIndex = [dirWithSubFolders.isdir]; %# Find the index for directories
fileList = {dirData.name}'; %'# Get a list of the files
if ~isempty(fileList) if appendFullPath
fileList = cellfun(@(x)fullfile(dirName,x),... %# Prepend path to files
fileList,'UniformOutput',false);
end end
subDirs = {dirWithSubFolders(dirIndex).name}; %# Get a list of the subdirectories
validIndex = ~ismember(subDirs,{'.','..'}); %# Find index of subdirectories
%# that are not '.' or '..'
for iDir = find(validIndex) %# Loop over valid subdirectories
nextDir = fullfile(dirName,subDirs{iDir}); %# Get the subdirectory path
fileList = [fileList; getAllFiles(nextDir, fileExtension, appendFullPath)]; %# Recursively call getAllFiles
end
Jop! Vielen, vielen Dank!
Funktioniert!
Zwar nicht so wie ich das am Anfang wollte, aber mit ein bisschen umbauen meines ursprünglichen Codes hab ich jetzt genau das was ich will!
Danke _________________
never touch a running system!
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.