Run function on all subfolders and save as separate structs

3 次查看(过去 30 天)
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.

采纳的回答

Jan
Jan 2021-9-7
编辑:Jan 2021-9-7
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 个评论
Smith
Smith 2021-9-7
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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Structures 的更多信息

产品


版本

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by