如何计算matlab中cellarray元素的平均值?
how to calculate mean across the elements of a cellarray in matlab?
我有一个尺寸为 64x8 的 cellarray A,其元素在以下尺寸中,
520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double
520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double
520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double
...................
现在我需要在每列的 8 行中取 MEAN,这样我每行只会得到一个 520X1 单元格.
所以,在跨行应用平均值之后,我的输出应该类似于,
520x1 double
520x1 double
520x1 double
520x1 double
............
因此,我的输出将是从 64x8 转换而来的 64x1 元胞数组。
我尝试使用以下命令执行此操作,
avgCell = {mean(cat(3,C{:}),3)}
但是,它给出了 1X1 元胞数组,只有一个元胞维度为 520X1.
请指正,并建议我是否有任何功能可以处理这个问题。如果我需要循环来执行此操作,还请告诉我?
% Create sample data...
A = cell(64,8);
for i = 1:64
for j = 1:8
A{i,j} = rand(520,1);
end
end
% Calculate column-wise means...
B = mean(cell2mat(A),2);
% Reshape the result into a cell array...
C = mat2cell(B,repmat(520,64,1),1);
我有一个尺寸为 64x8 的 cellarray A,其元素在以下尺寸中,
520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double
520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double
520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double 520x1 double
...................
现在我需要在每列的 8 行中取 MEAN,这样我每行只会得到一个 520X1 单元格.
所以,在跨行应用平均值之后,我的输出应该类似于,
520x1 double
520x1 double
520x1 double
520x1 double
............
因此,我的输出将是从 64x8 转换而来的 64x1 元胞数组。
我尝试使用以下命令执行此操作,
avgCell = {mean(cat(3,C{:}),3)}
但是,它给出了 1X1 元胞数组,只有一个元胞维度为 520X1.
请指正,并建议我是否有任何功能可以处理这个问题。如果我需要循环来执行此操作,还请告诉我?
% Create sample data...
A = cell(64,8);
for i = 1:64
for j = 1:8
A{i,j} = rand(520,1);
end
end
% Calculate column-wise means...
B = mean(cell2mat(A),2);
% Reshape the result into a cell array...
C = mat2cell(B,repmat(520,64,1),1);