我有以下结构
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)
这个问题确实与括号有关。 [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
将获得你正在寻找的索引。