找出向量中元素之间的最小正差异

时间:2013-07-30 19:36:38

标签: matlab

A = [1 3 5 8]
B = [1 2 3 4 5 6 7 8]

我想创建一个向量C,它返回向量A中元素的 rownumber ,其中向量{{}中每个元素的最小非负差异1}}。

所以,鉴于上面的例子,它应该返回:

B

2 个答案:

答案 0 :(得分:1)

我确信有很多方法可以做到这一点。这是一个:

A = [1 3 5 8]
B = [1 2 3 4 5 6 7 8]

%create matrices of the values to subtract
[a,b] = meshgrid(A,B);
%subtract
aLessB = a-b;
%make sure we don't use the negative values
aLessB(aLessB < 0) = Inf;
%sort the subtracted matrix
[dum, idx] = sort(aLessB, 2, 'ascend');

idx(:,1)是您正在寻找的解决方案。

答案 1 :(得分:1)

另一种解决方案:

 D = bsxfun(@minus, A', B);
 D(D < 0) = Inf;
 [~, C] = min(D, [], 1);