A = [1 3 5 8]
B = [1 2 3 4 5 6 7 8]
我想创建一个向量C
,它返回向量A
中元素的 rownumber ,其中向量{{}中每个元素的最小非负差异1}}。
所以,鉴于上面的例子,它应该返回:
B
答案 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);