For loop to store one matrix from multiple files to a structure
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
John Kim
am 17 Feb. 2023
Kommentiert: Stephen23
am 21 Feb. 2023
Hello everyone,
I am trying to create a for-loop to go through multiple files store a single matrix from each file into a structure.
The code I am currently using allows me to pull the necessary matrix but will not store them all into one structure
cd 'C:\Users\Document\Data'
a = dir('*.mat');
b = 1;
filename = a(b).name;
for i=1:size(a,1)
tempdata = importdata(filename);
all_new = tempdata.results;
b = b+1;
end
By the end, I am hoping to have a structure that contains the matrix "tempdata.results" from all the files in 'C:\Users\Document\Data'.
Thank you!
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 17 Feb. 2023
projectdir = 'C:\Users\Document\Data';
dinfo = dir(fullfile(projectdir, '*.mat'));
filenames = fullfile( {dinfo.folder}, {dinfo.name});
numfiles = length(filenames);
all_new(numfiles,1) = struct('results',[]); %pre-allocate
for K = 1 : numfiles
tempdata = load(filenames{K}, 'results'); %should contain only results
all_new(K) = tempdata;
end
It would probably be more common to use a cell array than a struct array, but you specifically asked for a structure.
In the case where the arrays are all the same size, you can often gain performance advantages by using a multidimensional array of data instead of a cell array or struct array.
2 Kommentare
Stephen23
am 21 Feb. 2023
"Could you elaborate on what you mean by multidimensional array?"
Siehe auch
Kategorien
Mehr zu Structures finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!