在matlab中搜索单元格数组

时间:2015-01-22 23:52:35

标签: matlab cell

在matlab中的

我创建了一个包含不同大小的数组的单元格。例如:

group{1} = [2;3;4];
group{2} = [4;5];
group{3} = [2;4;11;5;7];

我要找到元素并删除它们。如果我搜索' 4'那么结果应该如下:

group{1} = [2;3];
group{2} = [5];
group{3} = [2;11;5;7];

我怎么能在matlab中做到这一点?我试着找到,ismember,[group {:}]。

1 个答案:

答案 0 :(得分:4)

  1. 您可以使用setdiff

    remove = 4; %// may be a single value or a vector
    group = cellfun(@(x) setdiff(x,remove,'stable'), group, 'UniformOutput', 0);
    

    'stable'中的setdiff选项用于保留原始元素顺序。

  2. 或者,使用ismember

    remove = 4; %// may be a single value or a vector
    group = cellfun(@(x) x(~ismember(x,remove)), group, 'UniformOutput', 0);
    
  3. 可能更快:如果您只想删除一个值,只需使用索引:

    remove = 4; %// just one value
    group = cellfun(@(x) x(x~=remove), group, 'UniformOutput', 0);