使用查找的多个查询(或语句)

Multiple queries (OR statements) using find

目前要使用 find 执行多个查询,我分别调用每个查询,用 |

分隔
index = find(strcmp(data{:,{'type'}},'A') | strcmp(data{:,{'type'}},'B') | strcmp(data{:,{'type'}},'C') | strcmp(data{:,{'type'}},'D'));

查找字段 'type' 包含 A、B、C 或 D 的所有行。

data 保存在 table 中,因此使用 }.

有没有更简洁的方法来做到这一点,而不需要每次都完整地指定查询?

您可以使用 ismember 而不是多次使用 strcmp

index = find(ismember(data{:,{'type'}}, {'A','B','C','D'}));

另一种方法(因为 ismember 可能比多次使用 strcmp 慢)是分解重复代码 -

x = data{:, {'type'}}; %# This isn't valid MATLAB but whatever...
index = find(strcmp(x,'A') | strcmp(x,'B') | strcmp(x,'C') | strcmp(x,'D'));

为了便于阅读,您也可以使用多行

x = data{:, {'type'}}; %# This isn't valid MATLAB but whatever...
index = find(strcmp(x,'A') ...
           | strcmp(x,'B') ...
           | strcmp(x,'C') ...
           | strcmp(x,'D'));