找到数值最接近的值的索引

时间:2013-04-16 20:57:24

标签: matlab function find closest

假设我在matlab中有2个矩阵:

A = [1 4 6 9 11 13 15 18 21]

B = [2 10 19]

是否有一个我可以使用的函数,以便对于B中的每个元素,我能够在A中找到与该元素最接近的值的索引。例如,在上面的示例中:2,10和19是在数值上最接近1,9和18的A,而指数1,9和18是1,4和8,所以函数应该返回[1 4 8]。

我知道我可以使用循环来做到这一点,但是matlab并不真正喜欢循环加上我的矩阵太大而且迭代遍历所有值会非常昂贵。

1 个答案:

答案 0 :(得分:4)

我将按以下步骤进行:

% clc,clear all,close all
A = [1 4 6 9 11 13 15 18 21];
B = [2 10 19];
C = abs(bsxfun(@minus,A',B));
[~,idx] = min(C(:,1:size(C,2)))