Matlabでの作業では、長さが異なるx座標の2つのベクトルがあります。例えば:
xm = [15 20 24 25 26 35 81 84 93];
xn = [14 22 26 51 55 59 70 75 89 96];
xmをxnにマップする必要があります。つまり、xnのどの座標がxmに最も近いかを見つける必要があります。したがって、これらの座標に関連付けられた値がある場合は、このマップをインデックスとして使用し、それらの値を相互に関連付けることができます。
両方のベクトルがソートされ、各ベクトルに重複はありません。
forループを使用して単純な関数を作成しました。
function xmap = vectors_map(xm,xn)
xmap = zeros(size(xm));
for k=1:numel(xm)
[~, ind] = min(abs(xm(k)-xn));
xmap(k) = ind(1);
end
上記の例では、
xmap =
1 2 2 3 3 3 8 9 10
正常に動作しますが、長いベクトル(100,000ポイント以上)では時間がかかります。
このコードをベクトル化する方法はありますか?