在matlab中搜索元胞数组
search in cell array in matlab
在 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 中实现?我试过 find, ismember, [group{:}] .
您可以使用setdiff
:
remove = 4; %// may be a single value or a vector
group = cellfun(@(x) setdiff(x,remove,'stable'), group, 'UniformOutput', 0);
setdiff
中的'stable'
选项用于保持原始元素顺序。
或者,使用 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);
在 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 中实现?我试过 find, ismember, [group{:}] .
您可以使用
setdiff
:remove = 4; %// may be a single value or a vector group = cellfun(@(x) setdiff(x,remove,'stable'), group, 'UniformOutput', 0);
setdiff
中的'stable'
选项用于保持原始元素顺序。或者,使用
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);