我想在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
以上可能适用于稀疏数组。
答案 0 :(得分:1)
您是否考虑过使用pdist
自定义距离函数
sigmaCompact = pdist( x(:), @(x, Y) x.*Y );
sigma = squareform(sigmaCompact);
直到sigma( k, k );