计算c ++中数据之间距离的最优化方法

时间:2017-06-05 08:21:40

标签: c++ matlab optimization

我在2D平面上有n个点。我想用c ++计算每两点之间的距离。计划中第m个点的位置是(x(m),y(m))。这指出了在通过时间的变化。时间步数等于10 ^ 5。 我写了下面的代码,但由于n是一个很大的数字(5000),我想找到点之间的距离10 ^ 5次,我正在寻找最优化的方法来做到这一点。有谁能告诉我这样做最省时的方法是什么?

for(i=1;n;++)
   for(j=1;n;++)
      if (i>j)
         r(i,j)= r(j,i);
      else
         r(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);
      end
   end
end

我知道,在Matlab中,我可以使用bsxfun函数找到它。我还想知道哪一个可以更快地计算距离? Matlab还是c ++?

1 个答案:

答案 0 :(得分:0)

关于Matlab,你还有pdist这样做(但不是那么快),你也应该read this

关于比较Matlab和C首先阅读thisthis。还要记住,Matlab作为一个桌面程序,不仅需要知道实现代码的一般有效方法,还需要知道在Matlab中执行此操作的正确方法。一个例子是功能之间的差异。内置函数使用FORTRAN或C编写,运行速度比非内置函数快得多。要知道函数是否内置,请键入:

which function_name

并检查输出开头是否显示“内置”:

built-in (C:\Program Files\MATLAB\...)