我已经设置线段(未线),(A1, B1),(A2, B2),(A3, B3),其中A,B被结束的线段的点.每个A并B有(x,y)坐标.
问:
我想知道之间的最短距离point O,并line segments如所示所示图中的代码行实施.我真正理解的代码是伪代码或Python.
代码:我尝试使用此代码解决问题,遗憾的是,它无法正常工作.
def dist(A, B, O):
A_ = complex(*A)
B_ = complex(*B)
O_= complex(*O)
OA = O_ - A_
OB = O_ - B_
return min(OA, OB)
# coordinates are given
A1, B1 = [1, 8], [6,4]
A2, B2 = [3,1], [5,2]
A3, B3 = [2,3], [2, 1] …Run Code Online (Sandbox Code Playgroud) python numpy intersection line-intersection euclidean-distance
我想计算2个阵列之间多维度(24维)的eucledian距离.我正在使用Numpy-Scipy.
这是我的代码:
import numpy,scipy;
A=numpy.array([116.629, 7192.6, 4535.66, 279714, 176404, 443608, 295522, 1.18399e+07, 7.74233e+06, 2.85839e+08, 2.30168e+08, 5.6919e+08, 168989, 7.48866e+06, 1.45261e+06, 7.49496e+07, 2.13295e+07, 3.74361e+08, 54.5, 3349.39, 262.614, 16175.8, 3693.79, 205865]);
B=numpy.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151246, 6795630, 4566625, 2.0355328e+08, 1.4250515e+08, 3.2699482e+08, 95635, 4470961, 589043, 29729866, 6124073, 222.3]);
Run Code Online (Sandbox Code Playgroud)
但是,我曾经scipy.spatial.distance.cdist(A[numpy.newaxis,:],B,'euclidean')计算过核心距离.
但它给了我一个错误
raise ValueError('XB must be a 2-dimensional array.');
Run Code Online (Sandbox Code Playgroud)
我好像不明白.
我抬头scipy.spatial.distance.pdist但不明白如何使用它?
还有其他更好的方法吗?
我的数据集的格式:[x坐标,y坐标,小时],小时是0到23之间的整数值.
我现在的问题是,当我需要坐标的欧几里德距离度量时,我如何对这些数据进行聚类,但是对于小时来说是一个不同的距离(因为在欧几里德距离度量中d(23,0)是23).是否可以为scipy中的每个功能对具有不同距离度量的数据进行聚类?怎么样?
谢谢
我需要生成一个数据帧,其中数据帧的每一行与另一个数据帧的所有其他行之间的欧几里德距离最小.我的数据帧很大(大约40,000行).这是我现在可以解决的问题.
x<-matrix(c(3,6,3,4,8),nrow=5,ncol=7,byrow = TRUE)
y<-matrix(c(1,4,4,1,9),nrow=5,ncol=7,byrow = TRUE)
sed.dist<-numeric(5)
for (i in 1:(length(sed.dist))) {
sed.dist[i]<-(sqrt(sum((y[i,1:7] - x[i,1:7])^2)))
}
Run Code Online (Sandbox Code Playgroud)
但这只适用于i = j.我基本上需要的是通过逐行循环每一行来找到最小的欧氏距离(y [1,1:7],然后是y [2,1:7],依此类推直到i = 5)"y"数据帧与"x"数据帧的所有行(x [i,1:7]).每次这样做,我需要它来找到每个计算的最小欧几里德距离y数据帧的第i行和x数据帧的所有行,并将其存储在另一个数据帧中.
我正在使用caffe在底部训练一个带有Euclidean损失层的CNN,并且我的solver.prototxt文件被配置为每100次迭代显示一次.我看到这样的事情,
Iteration 4400, loss = 0
I0805 11:10:16.976716 1936085760 solver.cpp:229] Train net output #0: loss = 2.92436 (* 1 = 2.92436 loss)
Run Code Online (Sandbox Code Playgroud)
我对迭代损失和火车净损失之间的差异感到困惑.通常迭代损失非常小(大约为0),并且列车净输出损失稍微大一些.有人可以澄清一下吗?
我正在寻找一种算法或数据结构来解决以下问题:给你一组点S.你会得到另一个点的Q查询.对于每个查询,从给定点找到集合中的最远点.
集合中最多有10 ^ 5个点和10 ^ 5个查询.点的所有坐标都在0到10 ^ 5之间.
我想知道是否存在一种存储点集的方法,以便我们可以在必要时回答O(log n)或O(log ^ 2 n)中的查询.
algorithm euclidean-distance computational-geometry data-structures
有人为我的matlab程序发光吗?我有来自两个传感器的数据,我正在kNN分别对它们进行分类.在这两种情况下,训练集看起来像一组总共42行的向量,如下所示:
[44 12 53 29 35 30 49;
54 36 58 30 38 24 37;..]
Run Code Online (Sandbox Code Playgroud)
然后我得到一个样本,例如[40 30 50 25 40 25 30],我想将样本分类到最近的邻居.作为接近度的标准,我使用欧几里德度量,sqrt(sum(Y 2)),其中Y是每个元素之间的差异,它给出了Sample和每个训练集类别之间的距离数组.
那么,有两个问题:
补充:到目前为止我正在使用公式:probability = distance/sum of distances但我无法绘制正确的cdf或直方图.这给了我一些分布,但我看到了一个问题,因为如果距离很大,例如700,那么最接近的类将获得最大的概率,但它是错的,因为距离太大而不能与任何课程相比.
任何帮助或评论都非常感谢.
matlab classification knn euclidean-distance probability-density
我在欧氏距离计算中非常迷失.我发现函数dist2 {SpatialTools}或rdist {fields}来执行此操作,但它们不能按预期工作.
我想一个点在carthesian系统中有两个坐标,所以[x,y].要测量2个点之间的距离(由行定义),我需要2个点的4个坐标,所以点A:[x1,y1]点B:[x2,y2]
积分协调:

A[0,1]
B[0,0]
C[1,1]
D[1,1]
Run Code Online (Sandbox Code Playgroud)
我有两个矩阵:x1(A和C在那里,由行定义)和x2(包含B和D).写在矩阵中:
library("SpatialTools")
x1<-matrix(c(0,1,1,1), nrow = 2, ncol=2, byrow=TRUE)
x2<-matrix(c(0,0,1,1), nrow = 2, ncol=2, byrow=TRUE)
Run Code Online (Sandbox Code Playgroud)
所以我得到了
> x1
[,1] [,2]
[1,] 0 1 #(as xy coordinates of A point)
[2,] 1 1 #(same for C point)
> x2
[,1] [,2]
[1,] 0 0 #(same for B point)
[2,] 1 1 #(same for D point)
Run Code Online (Sandbox Code Playgroud)
计算之间的欧氏距离
A <-> B # same as x1[1,] <-> x2[1,]
C <-> …Run Code Online (Sandbox Code Playgroud) 我有两套点的2D A和B我需要找到每个点的最小距离A,在一个点B.到目前为止,我一直在使用SciPy的cdist和下面的代码
import numpy as np
from scipy.spatial.distance import cdist
def ABdist(A, B):
# Distance to all points in B, for each point in A.
dist = cdist(A, B, 'euclidean')
# Indexes to minimum distances.
min_dist_idx = np.argmin(dist, axis=1)
# Store only the minimum distances for each point in A, to a point in B.
min_dists = [dist[i][md_idx] for i, md_idx in enumerate(min_dist_idx)]
return min_dist_idx, min_dists
N = 10000
A = …Run Code Online (Sandbox Code Playgroud) 你好。
在过去的一个月里,我一直在从各种来源收集信息,但没有找到适合我的特定问题的想法。所以这里是问题的表述:
给定一个缓冲区几何形式的网格(顶点坐标和顶点索引的 32 位数组 + 附加数组,例如顶点法线、uvs 或切线),计算围绕网格的均匀点网格的有符号距离函数 (SDF)几何学。
更具体地说,我打算在 Maxon 的 Cinema4D 或 Blender 等 3D 引擎中创建类似于 MetaBall 对象的东西。我已经成功地为所有几何图元实现了距离函数,但是任意网格 SDF 需要我实现一种蛮力方法 - 测试每个网格点的每个网格三角形的距离 - 当然,对于复杂的,这变得非常慢网格。
现在,我回想起来,这些问题中的大多数都需要构建一个树状结构,例如八叉树、KD 树、BSP 树或 AABB 树。然后我发现了一些关于所谓的快速扫描算法 (用于求解 Eikonal 方程)的文章,该算法首先需要用 0 填充位于边界(在我的情况下为网格,或最接近网格)的网格点其余的值较大(Infinity),然后迭代求解非线性双曲边值问题(Gauss-Seidel)。我还在CGAL 库中找到了网格 SDF 方法的开源实现。或者,我也考虑过使用一些着色器库(如 GLSL),也许尝试使用 GPU 构建树,但我从未在 JS 或 TS 项目中使用过着色器。
我一直坚持的步骤不仅仅是选择最好的选择,而且实际上实际上至少有效地使用了这些方法中的一种。例如:
如果我想实现Fast-Marching Method,我必须遍历所有三角形,然后为每个三角形遍历所有网格点 Gijk,并使用类似于 Marching Cubes 查找表的东西来查找网格单元交叉点(但使用更多选项),我会为相交的单元格顶点插入接近 0 的值。我有一种感觉,这会花费不必要的时间,并且被证明不适合实时更新。
我设法在 Unity 中找到了一些Ray Marching SDF计算的例子。此外,由于我从未尝试过直接在 GPU 上计算任何内容,因此我不知道例如并行计算的限制实际上是什么,我也不了解此类计算是如何进行的。我可以并行计算到每个三角形的距离,然后对每个网格点 Gijk 的所有距离进行快速排序吗?如果是这样,我如何将它包含到 TypeScript 项目中?
假设我围绕网格中的所有三角形构建了一个AABB 树(应该是 O(n …