Отображение 2 векторов - помогите векторизовать
Работая в Matlab, я имею 2 вектора координаты x разной длины. Например:
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-loop:
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 точек).
Любые идеи, как векторизовать этот код?