在Matlab中工作时,我有两个不同长度的x坐标向量。例如:
我需要将xm映射到xn,换句话说就是找出xn中最接近xm的坐标。因此,如果我有与这些坐标相关联的值,我可以使用此映射作为索引并关联这些值。
这两个向量都已排序,并且每个向量中都没有重复项。
我编写了一个简单的for循环函数:
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万个点)时需要一些时间。
有什么想法可以对这段代码进行向量化处理吗?
语法来跳过未使用的变量。如果您使用早期版本,请将替换为tmp。 - yuk