创建您自己的自定义 cellfun 函数

create your own custom cellfun function

我有一个名为 myCellArray 的元胞数组。它的大小为 1 x 1500。下面的快照(请注意列号不是 myCellArray 的一部分只是希望有助于突出显示我想要的答案向量 returned)。

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

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

我想使用 cellfun 调用自定义函数,该函数将采用 'ABC' 之类的参数,然后将其传递给 return 存在 ABC 的向量,因此答案应如下所示,

[1 9 10 11]

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

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

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