关于Matlab:查找数值最接近的值的索引

Find the index of numerically closest value

本问题已经有最佳答案,请猛点这里访问。

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

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

B = [2 10 19]

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

我知道我可以使用循环来执行此操作,但是matlab并不真的喜欢循环,而且我的矩阵太大,并且按时间迭代所有值将非常昂贵。


我将进行如下操作:

1
2
3
4
5
% 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)))