过滤掉不包含某些单词的行?

时间:2017-04-02 17:21:00

标签: matlab sorting filter cell-array

在MATLAB(R2015b)中,我有一个非常大的Cell C包含多个列向量,可以简化为:

C = [9000x1 double] [9000x1 double] {9000x1 cell} {9000x1 cell}

C中的最后两列,两个单元格(9000x1单元格),第一个单元格列包含单词'GREN''BLU',第二个单元格列包含单词'OVR''UNDR'随机。

因此,在我看来,例如C的前四行可能具有以下外观:

[ 123 54.3 'BLU' 'UNDR'; 125 51.3 'GREN' 'OVR'; 128 55.1 'GREN' 'UNDR'; 129 51.1 'BLU' 'OVR']

如何过滤掉 NOT 包含单词'BLU'和/或'OVR'的行?即以便上面的例子变成:

[ 123 54.3 'BLU' 'UNDR'; 125 51.3 'GREN' 'OVR'; 129 51.1 'BLU' 'OVR']

我尝试将细胞转换成矩阵格式(cell2mat),然后毫不费力地过滤矩阵。提前致谢!

1 个答案:

答案 0 :(得分:1)

使用strcmp

C = { 123, 54.3 ,'BLU', 'UNDR'; 125, 51.3, 'GREN', 'OVR'; 128, 55.1, 'GREN', 'UNDR'; 129,51.1,'BLU','OVR'};
idxs = strcmp(C(:,3),'BLU') | strcmp(C(:,4),'OVR');
CC = C(idxs,:)