问题标签 [euclidean-distance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3194 浏览

matlab - 给定一组数据点,找到“最接近”的数据点

所以我们有一个 3D 点的参考集(我们称之为 R),以及许多其他 3D 点集(我们称该组数据点集为 P,以及该 Pi 中的每个数据集)。

任务是返回使某些 Pi 和 R 中的数据点的欧几里得距离最小化的 Pi。我看到它的方式是这样的:

  1. 对于 Pi 中的每个点,与 R 中的每个点进行比较,并找到两点之间的最小差异。
  2. 将这些最小距离相加以达到 Pi 和 R 之间的最小总“差”。
  3. 答案 Pi 是差异最小的那个。

但这太疯狂了,因为这实际上意味着查看 R 中的每个点与 P 中的每个点之间的距离,可能是数千或数百万。当然,我可以做得更好。

我在 Matlab 工作,我不习惯。

有什么更好的算法可以使用?是否有适合此的数据结构?(例如KD树?)

0 投票
1 回答
3484 浏览

algorithm - 两个网格点之间的豪斯多夫距离

我必须为 2 个网格实现 Hausdorff 距离。网格是人体器官的不同分割结果,我必须比较它们,一个网格是黄金分割。第二个是分割算法的结果。

我将使用 Hausdorff 距离,但在理解我到底要做什么时遇到了一些问题。我知道我必须计算meshB中meshA中每个点的最近点,反之亦然。这些是我的相对距离。对于集合中的 2 个对应点,我采用最大相对距离 => hausdorff。(这就是我有多远)

现在我的问题是:一个网格有 ~100,000 点,另一个网格有 ~2,000。因此,这将是 n:1 关系。我在计算 Hausdorff 时需要考虑哪些点,我该如何解决?将不胜感激任何提示。谢谢!

0 投票
5 回答
5059 浏览

php - 使用mysql在3d中找到欧几里德距离的最有效方法是什么?

我有一个 MySQL 表,其中存储在 3 列 R、G、B 中的数千个数据点。如何使用欧几里德距离找到最接近给定点(a、b、c)的数据点?

我将颜色的 RGB 值分别保存在表格中,因此每列中的值限制为 0-255。我要做的是通过找到欧几里得距离最小的颜色来找到最接近的颜色匹配。

我显然可以遍历表中的每个点来计算距离,但这不足以有效地进行缩放。有任何想法吗?

0 投票
3 回答
248 浏览

r - 有没有办法通过避免循环来计算以下指定的矩阵?在 R 或 Matlab 中

我有一个 N×M 矩阵X,我需要计算一个 N×N 矩阵Y

现在,我必须使用嵌套循环来处理 O(n 2 )。我想知道是否有更好的方法,比如使用矩阵运算。

更一般地说,sum(....)可以是一个函数,其中fun(x1,x 2)是M×1 向量。x1x2

0 投票
1 回答
3703 浏览

c++ - 在 GPU 上计算平方欧几里得距离矩阵

p是第一组位置的矩阵,其中每一行给出特定点的坐标。类似地,让q是第二组位置的矩阵,其中每一行给出特定点的坐标。

那么成对平方欧几里得距离的公式是:

其中p(i,:)表示i矩阵 的第 - 行pp'表示 的转置p

我想k用 C++ 在支持 CUDA 的 GPU (NVidia Tesla) 上计算矩阵。我有支持 GPU 的 OpenCV v.2.4.1,但我对其他替代方案持开放态度,例如 Thrust 库。但是,我对 GPU 编程不太熟悉。你能建议一种有效的方法来完成这项任务吗?我应该使用哪些 C++ 库?

0 投票
2 回答
1395 浏览

java - Apache Commons Math 中使用 RealVectors 的平方欧几里得距离

我在 Java 中使用 Apache Commons RealVector 和 ArrayRealVector 类。我可以计算两个向量 v1 和 v2 之间的欧式距离为

但是,我正在寻找平方欧几里得距离。我知道有一种方法可以使用 Apache Commons Vector3D 来做到这一点 - 只需使用 distanceSq 函数。我正在使用高维向量进行最近邻搜索,因此没有必要取平方根——这对我的需求来说只是计算上的浪费。

我可以做

当然,这涉及返回一个我想避免的中间 ArrayRealVector。我可以很容易地编写代码来获得平方欧几里得距离,但我想使用 Apache Commons 数学的解决方案。任何内置的解决方案都会很棒——即使是其他 Apache Math 类的解决方案也可能没问题。

0 投票
1 回答
135 浏览

cluster-analysis - 在欧几里得空间中寻找“最紧”的子集

我在点 x_1, x_2, ... x_n \in R^d 中给出。我希望找到 k 点的子集,使得这些 k 点之间的距离之和最小。天真地这是一个 O(n 选择 k) 问题,但我正在寻找一种更快的算法。

我可以想到两种替代的等效公式:

  1. 最小边权团问题:将点视为一个图,边权重是距离,并找到最小权重团。这相当于最大边权重问题,已知它是 NP 完全的。但是,我知道我的图表嵌入在 R^d 中,并且所有权重都是正数,所以这可能会有所帮助吗?

  2. 最小无约束子矩阵问题:给定对称距离矩阵,我想找到一个总和最小的 kXk 次要。

我会很感激这方面的任何帮助。

0 投票
1 回答
531 浏览

javascript - Javascript Clusterfck 指标

所以我正在将旧的数据可视化转换为新平台,我有点卡在他们的社区排序功能上。在原始代码中,作者似乎使用了带有余弦相似度计算器的凝聚聚类。我认为在 Javascript 中解决此问题的最佳方法是使用我的自定义余弦相似度函数作为指标,使用 clusterfck 制作一棵树。对于我传递的每组数据,树几乎正确地排序。(但由于项目规范,“几乎”还不够好)。我检查了我的算法,一切看起来都正确,但是当我使用余弦相似度和欧几里得距离比较我的结果时,我得到了相同的排序结果。

这可能是什么原因造成的?我想我可能错误地传递了一些东西,而 clusterfck 将欧几里得作为默认值传递。下面是我的一段代码。有人可以验证吗?(另外,有没有更简单的方法来计算余弦相似度?我认为 JS 没有内置的点积)。

0 投票
2 回答
6005 浏览

objective-c - 计算 N 维空间中两点之间欧几里得距离的最快方法

我必须计算 N 维空间中两点之间的欧几里得距离,速度至关重要。我有两个 C 风格的浮点数组,代表 N 维空间中的两个点。

它们之间距离的公式是(^ 只是表示的幂,而不是 XOR): sqrt(sum((p1-q1)^2 + (p2-q1)^2 + .... (pn-qn) ^2))

我当前的代码如下所示:

这段代码很慢,我想知道是否有任何库可以加快速度?我想有人已经编写了一个关于在 c 中对数组执行数学运算的快速库,它可以让我快速对数组进行元素运算。

编辑:在回答 nevsan 时,我正在用一个小的 N 进行许多计算,大约 10 或 20。

0 投票
1 回答
4167 浏览

search-engine - 欧几里得距离还是余弦相似度?

我正在阅读 相似度测量 ,突然间我的整个世界都分崩离析了。我已经使用聚类技术实现了一个搜索引擎。对于聚类,我使用了 K 均值,其距离度量为欧几里德距离。我还使用余弦相似度来显示结果。我得到了惊人的准确结果。但是现在我读到了这篇文章,我所做的是规范化文档向量并计算两个向量之间的欧几里德距离,因此我没有考虑任何地方的幅度。

难道我做错了什么 ?

虽然我认为更高的词频会弥补更高的 tf-idf 值和更高的标准化 tf-idf 值,因此会适当地排名靠前。谢谢

结果(使用未归一化的向量,这些数字是欧几里得距离)

结果(使用归一化向量,数字是欧几里得距离)

结果(数字为余弦相似度)

结果 1 和 2 彼此不一致,而 2 和 3 非常一致。相似度更高,距离更小。在聚类质心向量和每个文档的文档向量之间获取距离。

事实上,最奇怪的结果是欧几里得距离为 418 且相似度最高为 0.87 的文档。而归一化距离变为 0.49 并且与相似性一致。