我有以下结构
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'
在 in dataDens.raga
,而不是相反。将此更改为
ismember(dataDens.raga, 'Tori')
将再次为您提供一个布尔数组,find
并将获得您正在寻找的索引。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句