我创建了代码来执行基于欧几里得距离从一个向量到另一个向量的点映射,并检查它是否工作正常。
但是,这需要太多时间。本质上,我已经为 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 矩阵,代码只是挂了很长时间......
有人能帮帮我吗...