How to concatenate matrices to calculate mean
2 次查看(过去 30 天)
显示 更早的评论
I have 40 matrices DJF1979_1980_125 to DJF2019_2020_125. Each matrix is 3x721x1440. I want a mean of all the matrices, that will be a single matrix. Please help.
2 个评论
Stephen23
2020-10-20
编辑:Stephen23
2020-10-20
"I have 40 matrices DJF1979_1980_125 to DJF2019_2020_125."
Accessing lots of numbered variables forces you into writing slow, ineffiicient, complex, buggy code:
The much better approach is to load data into an output variable
S = load(..)
and access its fields. Or use indexing with any type of array.
回答(2 个)
Jan
2020-10-20
As Steven has mentioned already, this is the main problem:
"I have 40 matrices DJF1979_1980_125 to DJF2019_2020_125"
Do not use strange names of variables to store importand data, bevause this impedes the processing. If you load these variables from files, store them in an array instead:
List = dir('*.mat');
Data = cell(size(List));
for k = 1:numel(List)
Data{k} = load(fullfile(List(k).folder, List(k).name));
end
Then you can apply the mean() function either is another loop, or by cellfun, or concatenate the varibales in a 4th dimension at first:
AllData = cat(4, Data{:});
MeanData = mean(AllData, 3);
3 个评论
Stephen23
2020-10-20
If every mat file contain exactly one variable then you can do this inside the loop:
fnm = fullfile(List(k).folder, List(k).name);
Data(k) = struct2cell(load(fnm));
Jan
2020-10-20
@Jaydeb Saha: I do not know the contents of these files. Maybe you want to import a specific variable only?
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!