MyCell是一个5x10的字符串单元格(文件名)。我想基于字符串匹配删除每个5个单元格中的一个元素。
如果我输入:
setdiff(MyCell{1,1}, {'Dontwant.mat'})
它有效,我得到了一个包含其余元素的9元素单元格。
现在我想为每5个元素执行此操作,但如果我的脚本包含:
MyCell=cellfun(@(x) setdiff({x},{'Dontwant.mat'}), MyCell , 'uniformoutput', 0);
我收到以下错误:
使用cell / setdiff时出错> cellsetdiffR2012a(第292行)输入类A 除非,类单元格的单元格和输入B必须是字符串的单元格数组 一个是字符串。
cell / setdiff错误(第84行) [varargout {1:nlhs}] = cellsetdiffR2012a(varargin {:});
非常感谢任何帮助。
答案 0 :(得分:3)
将传递给您的匿名函数的x
已经是一个单元格数组,您不需要将它包装在大括号{x}
中,所以正确的版本是:
MyCell=cellfun(@(x) setdiff(x,{'Dontwant.mat'}), MyCell , 'uniformoutput', 0);
如果一个参数是字符串, setdiff
也可以工作,因此您可以使用
MyCell=cellfun(@(x) setdiff(x,'Dontwant.mat'), MyCell , 'uniformoutput', 0);