例如,
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
的整行。
答案 0 :(得分:2)
将ismember
与'rows'
选项一起使用:
index = find(ismember(B, A, 'rows'));
您也可以申请pdist2
:
index = find(any(pdist2(A,B)==0, 1));
答案 1 :(得分:1)
您可以在此处使用 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')