我有一个包含5个3×4切片的3D数组,定义如下:
rng(3372061);
M = randi(100,3,4,5);
我想收集有关数组的一些统计信息:
>每列中的最大值.
>每行的平均值.
>每个切片内的标准偏差.
这很简单,使用循环,
sz = size(M);
colMax = zeros(1,4,5);
rowMean = zeros(3,1,5);
sliceSTD = zeros(1,1,5);
for indS = 1:sz(3)
sl = M(:,:,indS);
sliceSTD(indS) = std(sl(1:sz(1)*sz(2)));
for indC = 1:sz(1)
rowMean(indC,1,indS) = mean(sl(indC,:));
end
for indR = 1:sz(2)
colMax(1,indR,indS) = max(sl(:,indR));
end
end
但我不确定这是解决问题的最佳方法.
我在max,mean和std的文档中注意到的一个常见模式是它们允许指定额外的暗淡输入.例如,在max中:
M = max(A,[],dim) returns the largest elements along dimension dim. For example, if A is a matrix, then max(A,[],2) is a column vector containing the maximum value of each row.
如何使用此语法来简化我的代码?