How to concatenate matrices to calculate mean
4 ビュー (過去 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 で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!