我的矩阵A
类似于:
A = [ 1 1 1 2 2 2; ...
1 2 2 2 2 2; ...
2 2 2 2 2 2; ...
1 1 1 2 2 3; ...
1 1 1 2 3 2; ...
1 2 2 2 3 2; ...
1 2 1 2 1 2]
现在我想创建类似于:
的向量B
B = [ 1, *, 1, 2, *, *];
*
意味着元素可以是任何值。我将在以下代码中使用A
和B
来获取包含具有一致性(ismember
)的行的矩阵。
[~, indx]=ismember(A,B,'rows')
期望的结果将是:
indx = [ 1; 0; 0; 1; 1; 0; 1;] % so B is a member of A for rows 1, 4, 5 and 7
我知道如果B
等于[1 1 1 2 2 2]
,它会起作用,结果就是第1行。
答案 0 :(得分:4)
你几乎拥有它。只需使用选定的列:
B = [1 NaN 1 2 NaN NaN ]; %// NaN is used to indicate "don't care", in this case
pos = ~isnan(B); %// positions of actual values
indx = ismember(A(:,pos),B(pos),'rows') %// select columns and apply ismember