我正在寻找一种有效的方法来计算大小坐标矩阵(nodeCount x 2)中所有点之间使用MATLAB的成对距离。我不希望两次计算配对距离(例如,在节点1-2和节点2-1之间)。我构建了一个外部'for'循环,该循环通过每个节点增加一个内部循环,该循环仅评估更高索引号的节点。结果是由节点分隔距离填充的上三角矩阵。我想对这些计算进行向量化,或者至少提高此操作的效率。任何帮助,将不胜感激。向量化依赖嵌套循环
gap = 10;
for s = 1:(nodeCount);
for ss = s+1:(nodeCount);
if abs(nodeCoord(s,1)-nodeCoord(ss,1)) < gap;
sep(s,ss) = sqrt((nodeCoord(s,1)-nodeCoord(ss,1))^2+(nodeCoord(s,2)-nodeCoord(ss,2))^2);
end
end
end
很想看看这里发布的解决方案如何在效率方面为您服务! – Divakar 2014-08-28 14:36:48
大家好,非常感谢您的评论!我修改了我的原始代码来显示一个技巧,我正在使用它来加快计算速度,为我的应用程序。我最感兴趣的是计算由变量“间隙”定义的彼此之间的一定距离内的节点对之间的距离。我在代码中添加了一个额外的屏幕,它可以过滤掉比'x'方向上的间隙更远的节点坐标,所以我进一步减少了计算时间和内存需求。我正在处理数以千计的节点,这个代码是瓶颈。 – 2014-08-28 14:48:48
你是否预先分配'sep'为零?我在问,因为如果条件 - 如果abs(nodeCoord(s,1)-nodeCoord(ss,1))
Divakar
2014-08-28 16:08:26