我具有以下结构
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)
答案 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
将获得您要查找的索引。