Работая в 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:
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 точек).
Есть идеи, как векторизовать этот код?