假设我有一个名为data
的数据集是从dataset(xls2struct('file.xls')
创建的:
subj_CDI: {1166x1 cell}
age_at_test_CDI: [1166x1 double]
developmental_age_CDI: [1166x1 double]
表达式:
data(data.developmental_age_group_CDI==3, 'subj_CDI')
将从data.subj_CDI
返回单元格。没问题。
但是,如果我尝试通过匹配“HA18”的单元格进行搜索,请使用以下表达式:
data(data.subj_CDI=={'HA18'}, 'developmental_age_group_CDI')
我收到此错误:
??? Undefined function or method 'eq' for input arguments of type 'cell'.
我知道这是一个数据不匹配,但我无法弄清楚如何解决它...我试图将data.subj_CDI
转换为结构,但未成功访问它。 ..
由于
答案 0 :(得分:2)
您应该使用strcmp
代替。它将为您提供您正在寻找的元素(或元素!)的索引。
index = strcmp('HA18',data.subj_CDI);
然后要获取值/值,请使用
data.age_at_test_CDI{index}
答案 1 :(得分:0)
Matlab函数cellfun
用于将特定函数应用于单元格中的每个元素。需要花费一些精力才能适应它,但它非常强大。看一下你的例子:
cellfun(@(x)strcmp(x,'HA18), data.subj_CDI)
返回data.subj_CDI
元素的数组,其中strcmp(x, 'HA18')
为真(在将每个元素替换为x
之后)。
然后你可以使用
data.age_at_test_CDI(cellfun(@(x)strcmp(x,'HA18), data.subj_CDI))
获得结果。