在Matlab中工作我有2個不同長度的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
它的工作原理確定,但需要一段時間有長向量(超過10點) 。
任何想法如何矢量化這段代碼?
我在Matlab的最新版本中使用新的〜語法來跳過一個未使用的變量。如果你有一個更早的版本,只需用〜替換tmp即可。 – yuk 2010-01-26 21:39:05
只是爲了澄清,你想爲每個xm [i]索引j這樣xm [i]最接近xn [j]? – 2010-01-26 21:47:45
是的。很好的總結,謝謝。 – yuk 2010-01-27 01:20:20