ユークリッド距離に基づいて、あるベクトルから別のベクトルへの点のマッピングを実行するコードを作成し、それが正しく動作することを確認しました。効率のためにコードを最適化する
ただし、時間がかかりすぎます。基本的には、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
これは5000に相当します...スペース内のポイント数に依存する – anon