草庐IT

欧几里德

全部标签

python - 给定测地线的成对距离矩阵,哪些算法可用于为流形生成欧几里德嵌入?

我有一个方阵D(目前表示为形状为(572,572)的numpy数组)似乎对应于沿大致圆柱形物体表面的点之间的成对距离。即,值D[i,j]对应于沿该空心圆柱体表面的任何路径的最小长度。如何将这572个点构建到保留那些测地线距离的欧氏空间中的3维(或n维)嵌入?当前尝试像locallylinearembedding这样的算法和isomap能够采用成对的测地线距离矩阵并输出嵌入,以便成对的euclidean距离与原始测地线相同。虽然这通常不是同一个任务,但在输出恰好在某个维度上接近超立方体的情况下,所需的转换实际上已经发生(考虑swissroll),因为嵌入本身是一个流形,所以欧氏距离对应于

python - 在 Python 中生成欧几里德范数 <= 1 的随机向量?

更具体地说,给定一个自然数d,我如何在R^d中生成随机向量,使得每个向量x的欧几里德范数通过numpy.random.rand(1,d)生成随机向量是没有问题的,但是这种具有范数编辑:回复:Walter的评论,是的,我正在寻找R^d单位球中向量的均匀分布。 最佳答案 基于hyperspherepointpicking上的WolframMathworld文章和NateEldredge'sanswer对于math.stackexchange.com上的类似问题,您可以通过生成d独立高斯随机变量的向量和均匀分布在闭区间[0,1],然后将向

EGO-Planner:一种无需 ESDF(欧几里得距离场) 梯度的局部路径规划方法

文章目录0摘要1概览1.1传统方法1.2如何构建ESDFESDFESDF?1.3EGO−PlannerEGO-PlannerEGO−Planner介绍1.3.1方法步骤2相关工作2.1基于梯度的运动规划2.2ESDFESDFESDF2.3碰撞避免2.3.1算法1:CheckAndAddObstacleInfoCheckAndAddObstacleInfoCheckAndAddObstacleInfo2.3.2碰撞力估计小结3基于梯度的轨迹优化器3.1建模3.1.1光滑项惩罚3.1.2碰撞项惩罚3.1.3可行项惩罚3.2最优化解法(数值优化)4时间重新分配以及轨迹进一步优化4.1具体步骤5实验结

c++ - 为什么 C++ 将范数定义为欧几里得范数的平方?

这听起来像是一个反问,但我在这里提出这个问题有两个原因:我花了一段时间才弄明白C++std::norm()的作用与MATLAB有何不同。/Octave,所以其他人可能会在这里偶然发现它。我觉得将norm()函数定义为与通常被认为是规范(或L2规范或欧几里得规范等)不同的东西(尽管密切相关)很奇怪.等)具体而言,C++标准库将复数的norm()定义为模数(或绝对值)的平方,其中模数为sqrt(a^2+b^2)时复数的形式为a+i*b。这违背了我对范数的理解,当指定为欧几里得范数(对应于此处使用的模数)时,它是平方和的平方根。我会引用Mathworld'sdefinitionoftheco

c++ - 有效地实现下限/欧几里得整数除法

地板除法是当结果总是向下(朝向-∞)而不是朝向0时:是否可以在C/C++中有效地实现整数除法或欧式整数除法?(显而易见的解决方案是检查被除数的符号) 最佳答案 我编写了一个测试程序来对这里提出的想法进行基准测试:#include#include#include#include#defineN10000000#defineM100intdividends[N],divisors[N],results[N];__forceinlineintfloordiv_signcheck(inta,intb){return(a>(sizeof(a)

python - 两个不同 Numpy 数组中的点之间的最小欧几里得距离,不在

我有两个x-y坐标数组,我想在一个数组中找到每个点之间的最小欧几里得距离all是另一个数组中的点。数组不一定大小相同。例如:xy1=numpy.array([[243,3173],[525,2997]])xy2=numpy.array([[682,2644],[277,2651],[396,2640]])我当前的方法循环遍历xy1中的每个坐标xy并计算该坐标与其他坐标之间的距离。mindist=numpy.zeros(len(xy1))minid=numpy.zeros(len(xy1))fori,xyinenumerate(xy1):dists=numpy.sqrt(numpy.su

c++ - 2D 欧几里得 vector 旋转

我有一个欧几里得vectora位于坐标(0,1)。我想将a围绕原点旋转90度(顺时针):(0,0).如果我对它的工作原理有正确的理解,旋转后的结果(x,y)坐标应该是(1,0)。如果我将它旋转45度(仍然是顺时针),我会期望得到的坐标是(0.707,0.707)。theta=deg2rad(angle);cs=cos(theta);sn=sin(theta);x=x*cs-y*sn;y=x*sn+y*cs;使用上述代码,angle值为90.0度,结果坐标为:(-1,1)。我真是太糊涂了。以下链接中的示例肯定代表上面显示的相同公式吗?我做错了什么?还是我误解了vector是如何旋转的?

python - 如何用 NumPy 计算欧几里得距离?

我在3D空间中有两个点:a=(ax,ay,az)b=(bx,by,bz)我要计算它们之间的距离:dist=sqrt((ax-bx)^2+(ay-by)^2+(az-bz)^2)如何使用NumPy做到这一点?我有:importnumpya=numpy.array((ax,ay,az))b=numpy.array((bx,by,bz)) 最佳答案 使用numpy.linalg.norm:dist=numpy.linalg.norm(a-b)这是因为欧几里得距离是l2范数,并且是ord参数的默认值在numpy.linalg.norm中是2

欧几里得算法(脑补链接)求最大公约数(Python)

欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。假如需要求1997和615两个正整数的最大公约数,用欧几里得算法,是这样进行的:1997/615=3(余152)615/152=4(余7)152/7=21(余5)7/5=1(余2)5/2=2(余1)2/1=2(余0)至此,最大公约数为1简单来说就是用大数除小数,然后接着将每个式子里面的除数不断除以余数直到余数为零,那么最后的除数便是公约数。代码:defgcd(x,y):  dividend=max(x,y)#被除数  divider=min(x,y)#除数  remainder=dividend%divider#余数  w

欧几里得算法(脑补链接)求最大公约数(Python)

欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。假如需要求1997和615两个正整数的最大公约数,用欧几里得算法,是这样进行的:1997/615=3(余152)615/152=4(余7)152/7=21(余5)7/5=1(余2)5/2=2(余1)2/1=2(余0)至此,最大公约数为1简单来说就是用大数除小数,然后接着将每个式子里面的除数不断除以余数直到余数为零,那么最后的除数便是公约数。代码:defgcd(x,y):  dividend=max(x,y)#被除数  divider=min(x,y)#除数  remainder=dividend%divider#余数  w