所以说我有两个数组:
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
.我在网上找到的所有例子都列出了匹配的第一个或最后一个匹配项,我试图为所有匹配的值设置一个列表索引,甚至重复一个.谢谢
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]
你可以使用bsxfun
comarison:
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)