创建自己的自定义cellfun函数

时间:2015-01-23 15:32:38

标签: matlab

我有一个名为myCellArray的单元格数组。它的大小为1 x 1500.下方拍摄(请注意列号不属于myCellArray,只是为了帮助突出显示我想要的答案)。

1    2   3   4   5   6  7  8  9   10  11  12 13

ABC  []  DEF DEF DEF [] [] [] ABC ABC ABC [] DEF

我想使用cellfun来调用一个自定义函数,该函数将采用类似'ABC'的参数然后返回一个存在ABC的向量,所以答案应该如下所示,

[1 9 10 11]

如何为cellfun创建自定义函数?

1 个答案:

答案 0 :(得分:2)

这将给出包含所需字符串(在任何行中)的列的索引:

c = {1 2 3 4 5 6 7 8 9 10 11 12 13
    'ABC' [] 'DEF' 'DEF' 'DEF' [] [] [] 'ABC' 'ABC' 'ABC' [] 'DEF'};
indices = find(any(strcmp('ABC', c), 1));

关键是要注意strcmp功能

  • 适用于单元格数组,依次获取每个单元格的内容;
  • 如果任何输入不是字符串,
  • 会给false

如果您只有一行,则可以删除any(...,1)(虽然一般答案也有效):

c = {'ABC' [] 'DEF' 'DEF' 'DEF' [] [] [] 'ABC' 'ABC' 'ABC' [] 'DEF'};
indices = find(strcmp('ABC', c));