我创建了一个包含不同大小的数组的单元格。例如:
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 {:}]。
答案 0 :(得分:4)
您可以使用setdiff
:
remove = 4; %// may be a single value or a vector
group = cellfun(@(x) setdiff(x,remove,'stable'), group, 'UniformOutput', 0);
'stable'
中的setdiff
选项用于保留原始元素顺序。
或者,使用ismember
:
remove = 4; %// may be a single value or a vector
group = cellfun(@(x) x(~ismember(x,remove)), group, 'UniformOutput', 0);
可能更快:如果您只想删除一个值,只需使用索引:
remove = 4; %// just one value
group = cellfun(@(x) x(x~=remove), group, 'UniformOutput', 0);