Run function on all subfolders and save as separate structs

3 Ansichten (letzte 30 Tage)
Smith
Smith am 7 Sep. 2021
Kommentiert: Jan am 8 Sep. 2021
I built a function that allows me to select a folder using uigetdir and process all the data files located in it. It takes a bunch of .txt files and saves the relevant data into a struct. The issue that I'm running into is that the function only targets one folder at a time; I usually have data saved in a main folder with several subfolders that are named according to the test variable being changed, and I don't want to have to manually run the function on all the subfolders.
For example: Main folder = testnumber1, inside the main folder are subfolders named pressure1, pressure2, etc (up to 20 folders)
What I'm looking to do is select the main folder (testnumber1) and have a recursive function call that allows me to get multiple structs labeled pressure1, pressure2, etc. I have the function set up already, but I don't know how to automate it and have it save the info to structs labeled with the folder names.

Akzeptierte Antwort

Jan
Jan am 7 Sep. 2021
Bearbeitet: Jan am 7 Sep. 2021
You are looking for txt files? Then:
Mainfolder = 'D:\testnumber1\';
FileList = dir(fullfile(Mainfolder, '**', '*.txt')); % ** means recursively
Result = struct([]);
for iFile = 1:numel(FileList)
% FileList(iFile).folder is the specific subfolder
File = fullfile(FileList(iFile).folder, FileList(iFile).name);
... Process the File here
Result(iFile).File = File;
Result(iFile).Data = ???
end
  3 Kommentare
Smith
Smith am 7 Sep. 2021
Thanks for the help, I was able to use part of the code you sent me and adjusted it a bit so that I could specifically target the subfolders
mainfolder = uigetdir('D:\testnumber1\');
FileList = dir(fullfile(mainfolder, '**')); % ** means recursively
subfolders = unique({FileList.folder});
Result = struct([]);
for k = 2:numel(subfolders)
Result(k).data = myFunction(string(subfolders(k)));
end
Jan
Jan am 8 Sep. 2021
Fine.
I prefer the simpler:
subfolders{k}
% instead of
string(subfolders(k))

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Produkte


Version

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by