0

Matlab で同じベクトルの外積を計算したい。代表的な例は次のとおりです。

x=rand(1e5,1);
sigma=x*x'-spdiags(x,0,length(x),length(x));

これをスピードアップする明白な方法はありますか?x*x' は対称行列ですが、Matlab がその情報を使用して高速化する方法を見つけていません。

編集:ループでこれを行う方法がありますが、まだ利点がわかりません:

for k=1:length(x)
   sigma(k:length(x),k)=x(k).*x(k:length(x));
end

上記はスパース配列で機能する場合があります。

4

1 に答える 1

1

pdistカスタム距離機能での使用を検討しましたか

sigmaCompact = pdist( x(:), @(x, Y) x.*Y );
sigma = squareform(sigmaCompact);

の特別扱いまでsigma( k, k );

于 2013-02-05T16:05:42.583 に答える