结构内单元阵列的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个字符串字段,我想知道是否更容易将它们转换为数据集中的字符串数组。我不确定是否清楚,但我真诚地感谢你的帮助!