how can I select .mat file to load from part of the name?
13 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I need to load the following files one by one, using a for loop, because at each iteration I have to do some calculation with the variables of these files:
110-1-D2-6-sum.mat
110-1-D3-7-sum.mat
110-1-E0-8-sum.mat
110-1-E0-12-sum.mat
How can I do this? The problem is that the name changes not only in the last number, but also in the letters. I would load them using part of the name (D2-6; D3-7....)
0 commentaires
Réponse acceptée
Walter Roberson
le 20 Mar 2019
projectdir = pwd; %or appropriate directory name
looking_for = 'D2-6';
dinfo = dir( fullfile(projectdir, ['*' looking_for '*.mat']) );
filenames = fullfile(projectdir, {dinfo.name});
num_files = length(filenames);
results = cell(num_files, 1);
for K = 1 : num_files
this_file = filenames{K};
results{K} = Process_a_file(this_file);
end
4 commentaires
Walter Roberson
le 21 Mar 2019
Process_a_file would be a function that you would provide that would accept the file name and do whatever was appropriate with it. That would probably include load()
datastruct = load(filename); %returns a structure of all of the variables contained
var1 = datastruct.var1; %extract a particular one into a more convenient form
Plus de réponses (1)
Pasquale
le 20 Mar 2019
3 commentaires
Walter Roberson
le 20 Mar 2019
The code I posted does load one by one. It loops through all of the file names that match the looking_for and processes them one at a time. Your sample display only happens to show one file for each particular combination of letter-number-dash-number and if that holds true then it would only match one file, but I wrote the code with the assumption that several might match.
The code above is not designed to look for multiple substrings; it would have to be modified for that.
Voir également
Catégories
En savoir plus sur File Operations 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!