我已創建的代碼從一個向量執行的點的映射到另一基於歐幾里德距離和已檢查它的工作原理是正確的。優化代碼效率
但是它佔用太多時間。本質上,我創建了一個用於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