我已经编写了代码,根据欧几里得距离从一个向量映射到另一个向量,并且已经检查过它的正确性。然而,这个过程花费的时间太长了。本质上,我创建了一个欧几里得距离矩阵来比较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的矩阵,代码仅仅是长时间地卡在那里...
能有人帮我解决一下吗...