Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 查找单元格数组(本身是struc的一部分)中字符串的所有出现处_Matlab - Fatal编程技术网

Matlab 查找单元格数组(本身是struc的一部分)中字符串的所有出现处

Matlab 查找单元格数组(本身是struc的一部分)中字符串的所有出现处,matlab,Matlab,我有以下结构 dataDens = dens: [1x172 double] level: {1x172 cell} raga: {1x172 cell} 其中dataDens.raga包含(为了简单起见,减少下面的列数) 我想找到“Tori”出现的索引(即上面的例子中的[23])。但是,我尝试的所有命令(如下)要么给出错误,要么返回空白输出。我认为这可能只是在某个地方添加/删除一个花括号,或者使用一些转换;但我已经束手无策了,希望有人能帮我澄清一下 indic

我有以下结构

dataDens = 

     dens: [1x172 double]
    level: {1x172 cell}
     raga: {1x172 cell}
其中dataDens.raga包含(为了简单起见,减少下面的列数)

我想找到“Tori”出现的索引(即上面的例子中的[23])。但是,我尝试的所有命令(如下)要么给出错误,要么返回空白输出。我认为这可能只是在某个地方添加/删除一个花括号,或者使用一些转换;但我已经束手无策了,希望有人能帮我澄清一下

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
将获得您正在查找的索引

对于
index=find(strcmp([dataDens.raga{:}],{'Tori'}))
,返回true或false,因此该命令将不起作用。您可以使用
循环进行迭代。只需
index=find(strcmp(dataDens.raga,{'Tori'}))
应该可以正常工作(查看
[dataDens.raga{:}]
的输出以了解原因)<代码>索引=查找(ismember(dataDens.raga,'Tori')
也有效。您正在按错误的顺序检查成员身份…@medicine\u man
find
然后将返回真实值的索引,这是op想要的,对吗?因此使用
find
不是这里的问题,正在比较的是错误的。正确,问题不在于
find
本身。
ismember(dataDens.raga, 'Tori')