例如,
A=[1 0 1; 1 0 0; 1 1 1; 0 0 0];
B=[0 0 0; 0 0 1; 0 1 0; 0 1 1; 1 0 0; 1 0 1; 1 1 0; 1 1 1];
我只想查找B
包含的整行的行索引A
。
您可以bsxfun
在这里使用-
index = find(any(all(bsxfun(@eq,A,permute(B,[3 2 1])),2),1))
或intersect
与'rows'
选项一起使用-
[~,~,index] = intersect(A, B, 'rows')
或者 -
[~,index] = intersect(B, A, 'rows')
或setdiff
用'rows'
(也许有点复杂) -
[~,rem_index] = setdiff(B,A,'rows');
index = setdiff(1:size(B,1),rem_index)
编辑:如果顺序很重要,则可以像这样修改以前的代码-
[index,~] = find(squeeze(all(bsxfun(@eq,A,permute(B,[3 2 1])),2)).')
或者 -
[~,~,index] = intersect(A, B, 'rows','stable')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句