Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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访问_Matlab_Structure_Cell_Octave - Fatal编程技术网

结构内单元阵列的MATLAB访问

结构内单元阵列的MATLAB访问,matlab,structure,cell,octave,Matlab,Structure,Cell,Octave,假设我有一个名为data的数据集,它是从数据集(xls2struct('file.xls')创建的: 表达方式: data(data.developmental_age_group_CDI==3, 'subj_CDI') data(data.subj_CDI=={'HA18'}, 'developmental_age_group_CDI') 将从数据返回单元格。subc_CDI。没问题 但是,如果我尝试通过匹配“HA18”的单元格进行搜索,则通过以下表达式: data(data.devel

假设我有一个名为
data
的数据集,它是从
数据集(xls2struct('file.xls')
创建的:

表达方式:

data(data.developmental_age_group_CDI==3, 'subj_CDI') 
data(data.subj_CDI=={'HA18'}, 'developmental_age_group_CDI')
将从
数据返回单元格。subc_CDI
。没问题

但是,如果我尝试通过匹配“HA18”的单元格进行搜索,则通过以下表达式:

data(data.developmental_age_group_CDI==3, 'subj_CDI') 
data(data.subj_CDI=={'HA18'}, 'developmental_age_group_CDI')
我得到这个错误:

??? Undefined function or method 'eq' for input arguments of type 'cell'.
我知道这是数据不匹配,但我不知道如何解决它…我尝试转换
数据。将CDI
置于结构,但未能成功访问它


谢谢

您应该改用strcmp。它将为您提供要查找的元素(或多个元素!)的索引

index = strcmp('HA18',data.subj_CDI);
然后使用

data.age_at_test_CDI{index}

Matlab函数
cellfun
用于将特定函数应用于单元格中的每个元素。要适应它需要一些努力,但它非常强大。请看您的示例:

cellfun(@(x)strcmp(x,'HA18),  data.subj_CDI)
返回
数据的元素数组。sub_CDI
其中
strcmp(x,'HA18')
为真(将每个元素替换为
x
后)。 然后你可以用

data.age_at_test_CDI(cellfun(@(x)strcmp(x,'HA18),  data.subj_CDI))

获取您的结果。

我忘记了
strcmp
直接支持比较单元格和字符串。这是一个更清晰的答案。谢谢。我在MATLAB文档中看到过。在“医院”中MATLAB中预加载的数据集,字符串似乎作为字符串的结构数组存储在字段中…而XLS2STRUCT在结构中创建单元格数组。由于我只有2或3个字符串字段,我想知道是否更容易将它们转换为数据集中的字符串数组。我不确定是否清楚,但我真诚地感谢你的帮助!