小编Pol*_*Pol的帖子

计算欧氏距离的最快方法

我需要以最快的方式计算两点之间的欧氏距离.在C.

我的代码是这样的,看起来有点慢:

float distance(int py, int px, int jy, int jx){
     return sqrtf((float)((px)*(px)+(py)*(py)));
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

编辑:

对不起,我不清楚.我最好指定上下文:我正在使用图像,我需要从每个像素到所有其他像素的欧几里德距离.所以我必须计算很多次.我不能使用距离的平方.我将添加更多代码以便更清楚:

for (jy=0; jy<sizeY; jy++) {
        for (jx=0; jx<sizeX; jx++) {
            if (jx==px && jy==py) {
                ;
            }
            else{
                num+=rfun(imgI[py][px].red-imgI[jy][jx].red)/distance(py, px, jy, jx);
                den+=RMAX/distance(py, px, jy, jx);
            }
        }
    }


 float distance(int py, int px, int jy, int jx){
     return sqrtf((float)((px-jx)*(px-jx)+(py-jy)*(py-jy)));
}
Run Code Online (Sandbox Code Playgroud)

这就是我要做的.我必须用所有像素(px,py)来做

EDIT2:对不起,我不清楚,但我尽力保持这个问题的一般性.我正在编写一个用算法处理图像的程序.最大的问题是时间因为我必须真的非常快.现在我需要优化的是这个函数:`float normC(int py,int px,int color,pixel**imgI,int sizeY,int sizeX){

int jx, jy;
float num=0, den=0;
if (color==R) {
    for (jy=0; jy<sizeY; jy++) { …
Run Code Online (Sandbox Code Playgroud)

c performance euclidean-distance

6
推荐指数
1
解决办法
9397
查看次数

标签 统计

c ×1

euclidean-distance ×1

performance ×1