大矢量外产品Matlab

时间:2013-02-01 16:38:54

标签: matlab matrix-multiplication

我想在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

以上可能适用于稀疏数组。

1 个答案:

答案 0 :(得分:1)

您是否考虑过使用pdist自定义距离函数

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

直到sigma( k, k );

的特殊处理