我已创建的代码从一个向量执行的点的映射到另一基于欧几里德距离和已检查它的工作原理是正确的。优化代码效率
但是它占用太多时间。本质上,我创建了一个用于A和B矢量的欧氏距离的矩阵,并找到了它的最小值。在表示这些点的映射之后,我通过将它们标记为NaN来删除欧几里得矩阵中的行和列,以便进行下一次映射。
这个代码可以更为有效,因为它是非常缓慢现在...
Euclid = distance(A,B); % calculates euclid distance column v/s column wise.
for var = 1 : value
%# finds the min of Euclid and its position, when Euclid is viewed as a 1D array
[~, position] = min(Euclid(:));
%#transform the index in the 1D view to 2 indices
[i,j] = ind2sub(size(Euclid),position);
%display(strcat(num2str(i),32, num2str(j)));
mapping = [A(1,i) A(2,i) B(1,j) B(2,j)];
fprintf(FID,'%d %d %d %d\n', mapping);
Euclid(i , :) = NaN;
Euclid(: , j) = NaN;
%counter = counter + 1;
end
的问题是,对于一个5000 X 5000矩阵代码只是挂了很久......
有人可以帮我...
'value'从哪里来? – PearsonArtPhoto 2012-04-14 04:29:31
它相当于5000 ...取决于空间中的点数 – anon 2012-04-14 05:26:48