我有 10 個不同的資料集,每個資料集下都有一個保存的 .mat 檔案,它打開一個包含多個欄位的結構。在結構中的幾個欄位之后,有一個 15x15 double 的單元格,名為outcome.series.average{1,1}
. 如何計算所有資料集的這個 double 的平均值?
一個示例陣列是:
x = randi(1000, 15, 15);
所以我在不同的資料集下有這樣的double 10次,對于所有的資料集,double的命名方式都是一樣的。代碼需要遍歷資料集并將陣列保存在記憶體中,然后計算其平均值的新雙精度陣列并將其保存為 mat 檔案,但我一直無法這樣做。
以下是代碼的草稿:
outputdir = ['D:\Jake\Discounting\Analysis365\Datasets\'];
sets = [1:10];
for set = sets
dataset =[ 'Set', num2str(set)];
dir = [outputdir dataset '\'];
filename = 'results.mat';
results = load([dir filename]);
% results is now a structure in which
% results.outcome.series.average{1,1} is a 15x15 double
% Final outcome (the finalDouble) will be a mat file of a 15x15 double which is the
% average of all the doubles from all datasets
FinalDouble = save([outputdir finalmatfile]);
end
uj5u.com熱心網友回復:
outputdir = 'D:\Jake\Discounting\Analysis365\Datasets\'; % ' % No need for square brackets
sets = 1:10; % No need for square brackets
combined_sets = zeros(15,15, numel(sets)); % Initialise collection
for set = sets
dataset =[ 'Set', num2str(set)];
% dir() is a built-in, don't shadow it
my_dir = [outputdir dataset '\']; % ' % Just to fix highlighting on SO
filename = 'results.mat';
results = load([my_dir filename]);
% results is now a structure in which
% results.outcome.series.average{1,1} is a 15x15 double
combined_sets(:,:, set) = results.outcome.series.average{1,1};
end
average_set = mean(combined_sets,3);
首先,建立一個大小的集合矩陣15,15,numel(sets)
來連接所有集合。然后,使用 的第二個輸入引數mean(A, dim)
,即要操作的維度,對連接集進行平均,以回傳平均 15×15 矩陣。
我還做了一些小改動,并對它們的編碼風格進行了評論。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/489882.html
上一篇:在Matlab中的曲線擬合中向量必須是相同的長度誤差
下一篇:求和/平均每組N個元素