1

MyCell 是一个 5x10 的字符串单元格(文件名)。我想根据字符串匹配删除每 5 个单元格中的一个元素。

如果我输入:

setdiff(MyCell{1,1}, {'Dontwant.mat'})

它有效,我得到一个包含剩余元素的 9 元素单元格。

现在我想为每 5 个元素执行此操作,但如果我的脚本包括:

MyCell=cellfun(@(x) setdiff({x},{'Dontwant.mat'}), MyCell , 'uniformoutput', 0); 

我收到以下错误:

使用单元格/setdiff>cellsetdiffR2012a 时出错(第 292 行)类单元格的输入 A 和类单元格的输入 B 必须是字符串的单元格数组,除非一个是字符串。

单元格/setdiff 中的错误(第 84 行)[varargout{1:nlhs}] = cellsetdiffR2012a(varargin{:});

任何帮助将非常感激。

4

1 回答 1

3

x传递给您的匿名函数的 已经是一个元胞数组,您不需要将其包装在大括号中{x},因此正确的版本是:

MyCell=cellfun(@(x) setdiff(x,{'Dontwant.mat'}), MyCell , 'uniformoutput', 0); 

setdiff如果一个参数是字符串,也可以使用,因此您可以通过使用来简化它

MyCell=cellfun(@(x) setdiff(x,'Dontwant.mat'), MyCell , 'uniformoutput', 0); 
于 2013-10-18T14:31:59.250 回答