我正在尋找一種有效的方法來計算大小座標矩陣(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