gpt4 book ai didi

optimization - 优化MATLAB代码(嵌套for循环计算相似度矩阵)

转载 作者:行者123 更新时间:2023-12-03 17:08:13 29 4
gpt4 key购买 nike

我正在 MATLAB 中计算基于欧氏距离的相似度矩阵。我的代码如下:

for i=1:N % M,N is the size of the matrix x for whose elements I am computing similarity matrix
for j=1:N
D(i,j) = sqrt(sum(x(:,i)-x(:,j)).^2)); % D is the similarity matrix
end
end

可以帮助优化这个 = 减少 for 循环,因为我的矩阵 x 的维度是 256x30000

非常感谢!

--阿迪亚

最佳答案

在 matlab 中执行此操作的函数称为 pdist。不幸的是,它速度慢得令人痛苦,并且没有考虑到 Matlab 的矢量化能力。

以下是我为一个项目写的代码。让我知道您获得了什么样的加速。

   Qx=repmat(dot(x,x,2),1,size(x,1));
D=sqrt(Qx+Qx'-2*x*x');

请注意,这仅在您的数据点在行中且维度在列中时才有效。例如,假设我有 256 个数据点和 100000 个维度,然后在我的 Mac 上使用 x=rand(256,100000),上面的代码在大约半秒内生成一个 256x256 矩阵。

关于optimization - 优化MATLAB代码(嵌套for循环计算相似度矩阵),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5768136/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com