Отображение 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 точек).

Любые идеи, как векторизовать этот код?

Ответы на вопрос(6)

Ваш ответ на вопрос