跨不同 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 矩阵。
我也做了一些小改动,并在编码风格上对它们进行了评论。
我有 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 矩阵。
我也做了一些小改动,并在编码风格上对它们进行了评论。