查找哪个矩阵行具有从数组指定的值

时间:2019-02-06 17:39:11

标签: matlab matrix vector

如何查找矩阵中的哪一行具有在数组中输入的指定设置值?

例如;

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

,我想找出向量为[4 5 6 8]的行

2 个答案:

答案 0 :(得分:1)

您可以结合使用allfind ...

具有隐式扩展(R2016b或更高版本)

find( all( A == [4 5 6 8], 2 ) )

等效地,您可以使用bsxfun(与所有MATLAB版本兼容)

find( all( bsxfun( @eq, A, [4 5 6 8] ), 2 ) )

在两种情况下,您的示例3的输出均为A

答案 1 :(得分:0)

假设顺序很重要,我会去@Wolfie's approach

另一种可能性是使用ismember。当订单很重要或不重要时,都可以使用此功能。让

A = [4 5 6 7; 8 4 5 6; 4 5 6 8; 8 4 8 9; 1 2 2 4; 5 3 4 6];
v = [4 5 6 8];
  • 如果订单很重要:

    result = find(ismember(A, v, 'rows'));
    
  • 如果顺序无关紧要:

    result = find(all(ismember(A, v), 2));