For loop to store one matrix from multiple files to a structure
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Walter Roberson
2023-2-17
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!