跨不同 mat 文件的平均 double 数组

Average array of double across separate mat files

我有 10 个不同的数据集,每个数据集下都有一个保存的 .mat 文件,它打开了一个包含多个字段的结构。在结构中的几个字段之后,有一个 15x15 双精度的单元格,名为 outcome.series.average{1,1}。我如何计算所有数据集的这个两倍的平均值?

示例数组为:

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
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) 的第二个输入参数,即要操作的维度,对连接集进行平均 return 您的平均 15×15 矩阵。

我也做了一些小改动,并在编码风格上对它们进行了评论。