For loop to store one matrix from multiple files to a structure
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
John Kim
el 17 de Feb. de 2023
Comentada: Stephen23
el 21 de Feb. de 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 comentarios
Respuesta aceptada
Walter Roberson
el 17 de Feb. de 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 comentarios
Stephen23
el 21 de Feb. de 2023
"Could you elaborate on what you mean by multidimensional array?"
Ver también
Categorías
Más información sobre Structures en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!