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 回答