Loop through sub folders.
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
AUWAL ABUBAKAR
le 30 Jan 2020
Commenté : AUWAL ABUBAKAR
le 30 Jan 2020
Good day all,
I have 25 subfolder each contains some text files. I developed a loop that runs through the text files in a sub folder, extract some vaules from each text file and perform some calculations. Is there any way i can modify my code to run through all the the sub folders at the same time? I want the loop to execute my script (see the script below) for each sub folder and save the results ('Displacement') before proceeding to the next subfolder. So i am expeting to have Displacement1, Displacement2, ..Displacement25 as the final outcome.
x = []; y = []; z = [];
files = dir('*.xvi');
for k = 1:length(files);
fid = fopen(files(k).name,'r');
while ~feof(fid)
st = fgetl(fid);
if ~isempty(strfind(st,'CouchShiftLat'))
stread = textscan(st,'%s %f','Delimiter',';=');
x = [x; stread{2}(1)];
elseif ~isempty(strfind(st,'CouchShiftLong'))
stread = textscan(st,'%s %f','Delimiter',';=');
y = [y; stread{2}(1)];
elseif ~isempty(strfind(st,'CouchShiftHeight'))
stread = textscan(st,'%s %f','Delimiter',';=');
z = [z; stread{2}(1)];
end
end
fclose(fid);
end
Displacement=[x,y,z];
0 commentaires
Réponse acceptée
Mohammad Sami
le 30 Jan 2020
Modifié(e) : Mohammad Sami
le 30 Jan 2020
mainfolder = uigetdir;
subfolders = dir(mainfolder);
subfolders = subfolders([subfolders.isdir] & ~startsWith({subfolders.name},'.'));
for i = 1:length(subfolders)
x = []; y = []; z = [];
files = dir(fullfile(mainfolder,subfolders(i).name,'*.xvi'));
for k = 1:length(files);
fid = fopen(files(k).name,'r');
while ~feof(fid)
st = fgetl(fid);
if ~isempty(strfind(st,'CouchShiftLat'))
stread = textscan(st,'%s %f','Delimiter',';=');
x = [x; stread{2}(1)];
elseif ~isempty(strfind(st,'CouchShiftLong'))
stread = textscan(st,'%s %f','Delimiter',';=');
y = [y; stread{2}(1)];
elseif ~isempty(strfind(st,'CouchShiftHeight'))
stread = textscan(st,'%s %f','Delimiter',';=');
z = [z; stread{2}(1)];
end
end
fclose(fid);
end
Displacement=[x,y,z];
% save here
end
5 commentaires
Mohammad Sami
le 30 Jan 2020
yes, put this inside the subfolder loop.
Displacement=[x,y,z];
matfile = fullfile(mainfolder,subfolders(i).name,'output.mat');
save(matfile,'Displacement')
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Data Import and Export dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!