使用cellfun进行逻辑索引

时间:2018-08-14 19:58:09

标签: matlab cell

我有一个单元格data,其中包含一行和四列。我正在尝试做的是浏览第一列中的元素,并查看每个单元格的第一栏中是否显示了“ 2018年”。当我执行此代码时,它只会给我第四个单元格中包含“ 2018”的索引。并非所有单元格。任何帮助将不胜感激。

time = cellfun(@x, contains(x,'2018'),data{ii}(:,1))

This is the image of cell <code>data</code>

1 个答案:

答案 0 :(得分:1)

作为示例,我创建了一个小的数据样本,希望可以帮助您解决问题。

%Create cell array of strings.
data = {["2018","date","2018";"stack","cell2018","fun"],["data","stackoverflow","2018";"array","variable","data2018"]}

%Search for substring 2018 in the first column of every cell.
time = cellfun(@(x) contains(x(:,1),'2018'),data,'UniformOutput',0)

时间的输出是一个逻辑单元格数组:

>>time 

{2×1 logical}    {2×1 logical}

>>time{1}

1
0

>>time{2}

0
0

对于第一个单元格,该列包含2018stack,因此返回10

对于第二个单元格,该列包含dataarray,因此返回00

如果希望从逻辑数组中查找索引,可以将find函数与输出[row,col]一起使用。