2

假设我有一个名为的数据集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为结构,但没有成功访问它......

谢谢

4

2 回答 2

2

你应该strcmp改用。它将为您提供您正在寻找的元素(或元素!)的索引。

index = strcmp('HA18',data.subj_CDI);

然后要获取值/值,请使用

data.age_at_test_CDI{index}
于 2012-11-29T06:49:45.050 回答
0

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

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

data.subj_CDI返回where为 true的元素的数组strcmp(x, 'HA18')(在将每个单独的元素替换为 之后x。然后您可以使用

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

得到你的结果。

于 2012-11-29T06:54:22.980 回答