我有一个示例矩阵A
A = [1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]
A =
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
我想找到每行最接近的值。因此,如果X = 3.4
[MinDif,MinPos]=min(abs(A-X));
MinPos =
3 2 1 1 1
现在我想将这些位置填充到第二个矩阵B中。因此,位置(3,1)(2,2)(1,3)(1,4)(1,5)。
B = [10 11 12 13 14 ;11 12 13 14 15 ; 13 14 15 16 17; 14 15 16 17 18]
B =
10 11 12 13 14
11 12 13 14 15
13 14 15 16 17
14 15 16 17 18
我希望我的答案是
ans =
13 12 12 13 14
我尝试过
B(MinPos,find(MinPos))
但是那不给我我想要的。
您可以使用sub2ind
:
sub2ind
A = [1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]
B = [10 11 12 13 14 ;11 12 13 14 15 ; 13 14 15 16 17; 14 15 16 17 18]
X=3.4
[MinDif,MinPos]=min(abs(A-X));
sz = size(A)
idx = sub2ind(sz,MinPos,1:sz(2))
out = B(idx)