使用ismember列出所有索引

Dar*_*ark 2 indexing matlab

所以说我有两个数组:

    A:14 63 13
      38 44 23
      11 12 13
      38 44 23

    B:38 44 23 
Run Code Online (Sandbox Code Playgroud)

我试图用来ismember 返回B找到的每个位置的索引A.我在网上找到的所有例子都列出了匹配的第一个或最后一个匹配项,我试图为所有匹配的值设置一个列表索引,甚至重复一个.谢谢

Dan*_*Dan 6

ismember'rows'arugment 一起使用:

ismember(A, B, 'rows')
Run Code Online (Sandbox Code Playgroud)

这导致逻辑数组[0 1 0 1]通常比索引数组好,但如果你想要特定的索引,那么只需使用find:

find(ismember(A,B,'rows'))
Run Code Online (Sandbox Code Playgroud)

回来 [2,4]

请注意,如果B有多行,此方法仍然有效,例如B = [38 44 23; 11 12 13],它将返回[0; 1; 1; 1]


Sha*_*hai 5

你可以使用bsxfuncomarison:

idx = find( all( bsxfun(@eq, A, B), 2 )); %// only where all line matches
Run Code Online (Sandbox Code Playgroud)

结果用

idx =
 2
 4
Run Code Online (Sandbox Code Playgroud)