0

任何想法如何矢量化此代码?结果 S 应该是 3x3。

%PNorm is n x 3
S = zeros(3,3,n);
%TODO vectorize
for i = 1:n
    S(:,:,i) = Pnorm(i,:)'*Pnorm(i,:);
end
S = sum(S, 3);
4

2 回答 2

2

有什么理由不做:

S = Pnorm' * Pnorm;

唔?

于 2013-04-22T05:42:00.140 回答
0

对于显式计算,您可以将循环换成bsxfun

S = bsxfun( @times, permute( Pnorm, [2 3 1]), permute( Pnorm, [3 2 1] ) );
S = sum( S, 3 );

但是,对于有效的计算,请参阅EitanT的答案。

于 2013-04-22T05:40:25.067 回答