如果它有一些缺少的元素,请查找相应的行

时间:2013-11-29 20:44:51

标签: matlab

我的矩阵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, *, *];

*意味着元素可以是任何值。我将在以下代码中使用AB来获取包含具有一致性(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行。

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