选定尺寸的4D阵列的平均值

时间:2013-12-08 09:32:11

标签: arrays matlab matrix statistics mean

我在4D矩阵中使用MATLAB中的mean函数。

矩阵是一个32x2x20x7数组,我想找到每个第四维的每一行,第三维的所有列和元素的平均值。

每个b, c基本上意味着(数据(b,:,:,c)) [伪代码]。

然而,当我这样做的时候,它会为每个第三维度向我吐出单独的方法,你知道我怎么能得到它给我一个上述等式的意思 - 所以它会 32x7 =)224表示。

3 个答案:

答案 0 :(得分:3)

你可以不用循环来做:

data = rand(32,2,20,7); %// example data
squeeze(mean(mean(data,3),2))

关键是使用mean的第二个参数,它指定采用平均值的维度(在您的情况下:维度2和3)。 squeeze只删除单身尺寸。

答案 1 :(得分:2)

这应该有效

a=rand(32,2,20,7);

for i=1:32
    for j=1:7
        c=a(i,:,:,j);
        mean(c(:))
    end
end

答案 2 :(得分:1)

请注意,通过两次调用mean,结果中的数值差异很小,具体取决于操作顺序。因此,我建议通过拨打mean来避免此类问题:

squeeze(mean(reshape(data,size(data,1),[],size(data,4)),2))

或者如果您不喜欢squeeze(有些人会这样做!):

mean(permute(reshape(data,size(data,1),[],size(data,4)),[1 3 2]),3)

两个命令都使用reshape来组合data的第二维和第三维,以便在新的较大的第二维上对mean的单个调用将执行所有必需的计算。