我在4D矩阵中使用MATLAB中的mean
函数。
矩阵是一个32x2x20x7
数组,我想找到每个第四维的每一行,第三维的所有列和元素的平均值。
每个b, c
基本上意味着(数据(b,:,:,c)) [伪代码]。
然而,当我这样做的时候,它会为每个第三维度向我吐出单独的方法,你知道我怎么能得到它给我一个上述等式的意思 - 所以它会( 32x7 =)224表示。
答案 0 :(得分:3)
你可以不用循环来做:
data = rand(32,2,20,7); %// example data
squeeze(mean(mean(data,3),2))
答案 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
的单个调用将执行所有必需的计算。