【发布时间】:2015-07-03 20:00:57
【问题描述】:
我正在尝试优化这段代码并摆脱实现的嵌套循环。我在将矩阵应用于 pdist 函数时遇到了困难
例如,1+j // -1+j // -1+j // -1-j 是初始点,我试图通过最小距离方法检测 0.5+0.7j 到它所属的点.
任何帮助表示赞赏
function result = minDisDetector( newPoints, InitialPoints)
result = [];
for i=1:length(newPoints)
minDistance = Inf;
for j=1:length(InitialPoints)
X = [real(newPoints(i)) imag(newPoints(i));real(InitialPoints(j)) imag(InitialPoints(j))];
d = pdist(X,'euclidean');
if d < minDistance
minDistance = d;
index = j;
end
end
result = [result; InitialPoints(index)];
end
end
【问题讨论】:
-
InitialPoints和newPoints的大小是多少?每组中任意 2 个点之间的最小距离? -
你可以通过矢量化摆脱一个循环:mathworks.com/matlabcentral/newsreader/view_thread/47487
-
我有一个更好的方法,但这取决于点的尺寸。
-
要点很复杂
-
InitialPoints 大小为 1 -- 4 , 8 ,16 , 64 newpoints 大小就足够了
标签: matlab optimization vectorization nested-loops pdist