在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