标签: euclidean-distance

计算点与矩形之间的有符号距离

我正在尝试在GLSL中编写一个函数,该函数返回到矩形的符号距离.矩形是轴对齐的.我觉得有点卡住; 我无法绕过我需要做的事情才能让它发挥作用.

我想出的最好的是:

float sdAxisAlignedRect(vec2 uv, vec2 tl, vec2 br)
{
    // signed distances for x and y. these work fine.
    float dx = max(tl.x - uv.x, uv.x - br.x);
    float dy = max(tl.y - uv.y, uv.y - br.y);
    dx = max(0.,dx);
    dy = max(0.,dy);
    return sqrt(dx*dx+dy*dy);
}
Run Code Online (Sandbox Code Playgroud)

这会生成一个看起来像这样的矩形:

在此输入图像描述

线条显示距矩形的距离.它工作正常,但只适用于矩形外的距离.在矩形内部,距离是静态的0..

如何使用统一的公式在矩形内获得精确的距离?

shader geometry glsl euclidean-distance

12
推荐指数
1
解决办法
1382
查看次数

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

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

我在表格中单独保存RGB颜色值,因此每列中的值限制为0-255.我想要做的是通过找到欧氏距离最小的颜色找到最接近的颜色匹配.

我显然可以通过表格中的每个点来计算距离,但这不足以扩展.有任何想法吗?

php mysql algorithm math euclidean-distance

11
推荐指数
1
解决办法
3256
查看次数

使用距离矩阵在Pandas Dataframe中的行之间进行距离计算

我有以下Pandas DataFrame:

In [31]:
import pandas as pd
sample = pd.DataFrame({'Sym1': ['a','a','a','d'],'Sym2':['a','c','b','b'],'Sym3':['a','c','b','d'],'Sym4':['b','b','b','a']},index=['Item1','Item2','Item3','Item4'])
In [32]: print(sample)
Out [32]:
      Sym1 Sym2 Sym3 Sym4
Item1    a    a    a    b
Item2    a    c    c    b
Item3    a    b    b    b
Item4    d    b    d    a
Run Code Online (Sandbox Code Playgroud)

我想找到一种优雅的方法来Item根据这个距离矩阵得到每个距离:

In [34]:
DistMatrix = pd.DataFrame({'a': [0,0,0.67,1.34],'b':[0,0,0,0.67],'c':[0.67,0,0,0],'d':[1.34,0.67,0,0]},index=['a','b','c','d'])
print(DistMatrix)
Out[34]:
      a     b     c     d
a  0.00  0.00  0.67  1.34
b  0.00  0.00  0.00  0.67
c  0.67  0.00  0.00  0.00
d  1.34  0.67  0.00  0.00 
Run Code Online (Sandbox Code Playgroud)

例如Item1,Item2 …

python time-series matrix euclidean-distance pandas

10
推荐指数
3
解决办法
2万
查看次数

在CUDA中增加每个线程的工作的示例

简介:首先,作为介绍,我很自豪地在StackOverflow上提出我的第一个问题.我希望我能帮助别人,就像他们帮助我一样.

算法:

我正在用CUDA编写一个程序,问题如下:

  • 两个矩阵A(n*128)和B(m*128)

  • 我取A的第一行,然后逐个计算该向量与B的所有行之间的距离.

  • 我在矩阵C的一行上写出每个距离的结果,因此C的元素C(i,j)包含A的行i和B的行j之间的距离.

  • 然后我继续下一行A.

我用这种方式实现了它:我有一个由(n*m)个块组成的网格,每个块有128个线程.(1*128).

问题:程序成功运行并带有预期结果,但执行时间仅比单线程CPU版本快5到10倍.所以我想知道如何在减少之前增加每个线程的工作量以提高性能.

内核代码(原始:未优化)

 __global__ void EuclideanDistances( float *A, float *B , float *C , int n , int m)
{
    // SIZE is equal to 128
__shared__ float accumResult[SIZE];
float sA;
float sB;

    // MAPPING
int bx = blockIdx.x;  // n
int by = blockIdx.y;  // m
int ty = threadIdx.y; // 128
int tx = threadIdx.x; // 1


sA = A [bx * SIZE + ty];
sB …
Run Code Online (Sandbox Code Playgroud)

c++ cuda euclidean-distance distance-matrix

10
推荐指数
1
解决办法
1320
查看次数

两个n维矢量之间的欧几里德距离

在Julia中找到两个n维向量之间欧氏距离的简单方法是什么?

euclidean-distance julia

10
推荐指数
2
解决办法
4475
查看次数

使用矩阵乘法通过 numpy 计算 L2 距离

我正在尝试自己完成斯坦福 CS231n 2017 CNN 课程的作业。

我正在尝试仅使用矩阵乘法和 Numpy 的求和广播来计算 L2 距离。L2距离为:

在此输入图像描述

我想如果我使用这个公式我可以做到:

在此输入图像描述

以下代码显示了计算 L2 距离的三种方法。如果我将 method 的输出compute_distances_two_loops与 method 的输出进行比较compute_distances_one_loop,两者相等。但我将该方法的输出compute_distances_two_loops与该方法的输出进行比较compute_distances_no_loops,其中我仅使用矩阵乘法和求和广播实现了 L2 距离,它们是不同的。

def compute_distances_two_loops(self, X):
    """
Compute the distance between each test point in X and each training point
in self.X_train using a nested loop over both the training data and the 
test data.

Inputs:
- X: A numpy array of shape (num_test, D) containing test data.

Returns:
- dists: A numpy …
Run Code Online (Sandbox Code Playgroud)

python numpy euclidean-distance

10
推荐指数
1
解决办法
1万
查看次数

识别欧氏距离最小的点

我有一个n维点的集合,我想找到哪两个是最接近的.我可以为2个维度做的最好的是:

from numpy import *
myArr = array( [[1, 2],
                [3, 4],
                [5, 6],
                [7, 8]] )

n = myArr.shape[0]
cross = [[sum( ( myArr[i] - myArr[j] ) ** 2 ), i, j]
         for i in xrange( n )
         for j in xrange( n )
         if i != j
         ]

print min( cross )
Run Code Online (Sandbox Code Playgroud)

这使

[8, 0, 1]
Run Code Online (Sandbox Code Playgroud)

但这对于大型阵列来说太慢了.我可以应用什么样的优化?

有关:


两个不同的Numpy阵列中的点之间的欧几里德距离,而不是在内

python algorithm numpy nearest-neighbor euclidean-distance

9
推荐指数
3
解决办法
7744
查看次数

MATLAB版本7中的pdist2等效项

我需要在matlab中计算2个矩阵之间的欧氏距离.目前我正在使用bsxfun并计算距离如下(我附加了一段代码):

for i=1:4754
test_data=fea_test(i,:);
d=sqrt(sum(bsxfun(@minus, test_data, fea_train).^2, 2));
end
Run Code Online (Sandbox Code Playgroud)

fea_test的大小是4754x1024而fea_train是6800x1024,使用他的for循环导致for的执行花费大约12分钟,我认为太高了.有没有办法更快地计算两个矩阵之间的欧氏距离?

我被告知通过删除不必要的for循环,我可以减少执行时间.我也知道pdist2可以帮助减少计算时间,但由于我使用的是matlab版本7.我没有pdist2函数.升级不是一种选择.

任何帮助.

问候,

巴维亚

matlab vectorization euclidean-distance bsxfun

9
推荐指数
2
解决办法
4202
查看次数

两个向量之间的OpenCV欧几里德距离

我想计算两个向量之间的欧氏距离(或两个Matrx行,无关紧要).在OpenCV中是否有一个很好的功能?

opencv vector matrix euclidean-distance

9
推荐指数
1
解决办法
1万
查看次数

计算4维向量之间的欧几里德距离

假设我有两个四维向量(即a和b)如下:

a = {a1, a2, a3, a4}
b= {b1, b2, b3, b4}
Run Code Online (Sandbox Code Playgroud)

如何计算这些向量之间的欧几里德距离?

math vector dimension euclidean-distance

9
推荐指数
2
解决办法
1万
查看次数