【问题标题】:Function "pdist" in MatlabMatlab中的函数“pdist”
【发布时间】:2023-03-05 00:30:01
【问题描述】:

我有一个称为 r 的 N x 2 矩阵(N 非常大)。 r 是二维点的位置。我搜索了计算点之间距离的最佳优化方法。我发现如果不尝试将 dist 函数更改为方阵,则 dist 函数是最省时的。我想知道我是否会写

D= pdist(r, 'euclidean');

当我需要粒子 i 和 j 之间的距离时,使用 D 向量找到它的最佳方法是什么?如果不使用 if,我真的没有任何办法。 我知道我可以做到这一点

if (i < j) 
    D((i–1)*(m–i/2)+j–i)
end

但由于 N 非常大,因此效率不高。有人可以帮帮我吗?

【问题讨论】:

  • 你为什么需要它?总的来说,使用 if 测试似乎适合我。

标签: matlab optimization mathematical-optimization


【解决方案1】:

我使用iijj 作为大小和N 的假设距离矩阵M = squareform(D) 的行和列索引。结果是ind,因此D(ind) 等于M(ii,jj)

t = sort([ii, jj]); % temporary variable
ii = t(2); % maximum of ii and jj
jj = t(1); % minimum of ii and jj
t = N-1:-1:1;
ind = sum(t(1:jj-1)) + ii - jj;

【讨论】:

  • 比 squareform(D) 快吗?
  • @SoniaSohi 我以为你更关心记忆。至于速度,我不知道,最好在你的具体情况下测试自己
猜你喜欢
  • 2011-01-29
  • 1970-01-01
  • 2012-03-18
  • 2022-11-15
  • 2012-03-27
  • 2015-03-01
  • 1970-01-01
  • 2014-03-23
  • 1970-01-01
相关资源
最近更新 更多