使用setdiff和cellfun给出错误

时间:2013-10-18 14:17:14

标签: matlab cell-array set-difference

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 {:});

非常感谢任何帮助。

1 个答案:

答案 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);