Matlab:沿3D阵列第一维的操作

时间:2014-05-29 13:35:31

标签: matlab matrix

我有一个3D数组M(d * d,m,n)。对于M的每个d * d向量(即第一维的向量),我将其分成d个部分并取每个部分的总和以形成新的向量(大小为d)。 例如,如果u是沿着M的第一维的向量,那么它将被向量v替换,由下式计算:

v = sum(reshape(u,d,d))';

目前我使用循环如下,但我认为应该有更快的方法。

N = zeros(d,m,n)
for i=1:m
    for j=1:n
        N(:,i,j) = sum(reshape(M(:,i,j),d,d))'; %//'
    end
end

非常感谢您的任何建议!

2 个答案:

答案 0 :(得分:3)

试试这个 -

N = reshape(sum(reshape(M,d,[])),d,m,n)

答案 1 :(得分:3)

我可能没有正确理解这个问题,但这是你在寻找什么?

N=squeeze(sum(reshape(M,[d,d,size(M,2),size(M,3)])))