在矩阵中查找给定的行

shu*_*alo 42 matlab

我有一个m乘n矩阵MATLAB,比如M.我有一个n元素行向量,即一个n列矩阵,比如X.

我知道X在M的某个地方.我怎样才能在M中找到索引?

abc*_*bcd 65

编辑:

gnovice的建议甚至比我的简单:

[~,indx]=ismember(X,M,'rows')

indx =

     3
Run Code Online (Sandbox Code Playgroud)

第一个解决方案:

您可以使用find和轻松完成ismember.这是一个例子:

M=magic(4);        %#your matrix

M =

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

X=[9 7 6 12];      %#your row vector

find(ismember(M,X),1)

ans =

     3
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用ISMEMBER的`'rows'`参数稍微修改您的解决方案,以消除对FIND的需求:`[〜,index] = ismember(X,M,'rows')` (21认同)
  • 我认为在查找中仍需要'rows'关键字(ismember(M,X.'rows'),1) (2认同)
  • 如果`M`包含多个'X`并且我想找到它们怎么办? (2认同)

buz*_*jwa 8

在我了解之前ismember,我曾经做过:

index = find(all(bsxfun(@eq, M, X), 2));
Run Code Online (Sandbox Code Playgroud)

但使用ismember(X, M, 'rows')绝对是可取的.

  • 这是一个很好的解决方案,因为它返回X出现的矩阵的所有行(与标记的答案不同). (3认同)