查找单元格数组(结构本身的一部分)中字符串的所有出现

时间:2019-04-26 13:34:24

标签: matlab

我具有以下结构

dataDens = 

     dens: [1x172 double]
    level: {1x172 cell}
     raga: {1x172 cell}

dataDens.raga所组成的(为简单起见,减少了下面的列数)

Columns 1 through 3
    'Multani'    'Tori'    'Tori' 

我想找到“ Tori”出现的索引(即,上面的示例为[2 3])。但是,我尝试过的所有命令(如下)均给出错误或返回空白输出。我认为这可能只是在某个位置添加/删除大括号或进行一些转换的问题。但我已经不知所措了,希望有人可以帮忙澄清一下

indices = find(strcmp([dataDens.raga{:}], {'Tori'}))
indices = ismember('Tori', dataDens.raga)
[if,where] = ismember('Tori', dataDens.raga)

1 个答案:

答案 0 :(得分:1)

这个问题确实与方括号有关。 [dataDens.raga{:}]将导致字符数组的连接,如下所示:

>> [dataDens.raga{:}]
ans =
    'MultaniToriTori'

使用strcmp'Tori'进行比较将导致错误,因为没有完全匹配的结果。但是,您可以使用strcmp比较整个单元格,然后将返回一个布尔数组,在其中可以使用find获取true条目的索引:

indices = find(strcmp(data, {'Tori'}))

或者,ismember也可以,但是使用ismember('Tori', dataDens.raga)来检查'Tori'是否在dataDens.raga中,而不是相反。将此更改为

ismember(dataDens.raga, 'Tori')

将再次为您提供一个布尔数组,find将获得您要查找的索引。

相关问题