获取具有多种搜索模式的行索引

时间:2015-08-24 15:25:13

标签: matlab indexing

为了获取包含特定字符串或搜索模式的行的索引(来自数据表),我使用:

rowID = find(data{:,{'ColumnA'}}==pattern(1));

有没有办法执行类似的操作,但有多个模式?例如在下表中:

Column A   Column B
   2           A
   2           A
   3           B
   4           B
   2           B
   2           B

可以使用以下方法快速创建:

T = table();
T.Var1(1,1) = 2;
T.Var1(2,1) = 2;
T.Var1(3) = 3;
T.Var1(4) = 4;
T.Var1(5) = 2;
T.Var1(6) = 2;
T.Var2{1,1} = 'A';
T.Var2{2} = 'A';
T.Var2{3} = 'B';
T.Var2{4} = 'B';
T.Var2{5} = 'B';
T.Var2{6} = 'B';

我想提取行索引,其中ColumnA == 2和ColumnB ==' A'即[1 2]。

尝试双重索引时:

rowID = find(data{:,{'ColumnA'}}==2 & data{:,{'ColumnB'}}=='A');

尝试匹配字符串时出错:

Undefined operator '==' for input arguments of type 'cell'.

1 个答案:

答案 0 :(得分:1)

由于示例中的Var1是字符串的单元格数组,因此您可以使用strcmp

>> rowID = find(T{:,{'Var1'}}==2 &  strcmp(T{:,{'Var2'}},'A')

rowID =

 1
 2