在矩阵中,按列查找与引用最接近的值

问题描述 投票:0回答:1

我有一个示例矩阵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))

但是那不给我我想要的。

matlab find min
1个回答
0
投票

您可以使用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)
© www.soinside.com 2019 - 2024. All rights reserved.