0
任何想法如何矢量化這段代碼?結果S應該是3x3。矢量化matlab中外層產品的總和
%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);
任何想法如何矢量化這段代碼?結果S應該是3x3。矢量化matlab中外層產品的總和
%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);
有什麼理由不這樣做:
S = Pnorm' * Pnorm;
嗯?
對於顯式計算,你可以交易的環路bsxfun
:
S = bsxfun(@times, permute(Pnorm, [2 3 1]), permute(Pnorm, [3 2 1]));
S = sum(S, 3);
然而,對於一個有效的計算見EitanT的答案。
看,這就是爲什麼我真的需要採取線性代數當然:) – CodeFusionMobile 2013-04-22 12:44:37