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_CDIwhereがtrueの要素の配列を返しますstrcmp(x, 'HA18')(個々の要素をに置き換えた後x。次に、次を使用できます。

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

あなたの結果を得るために。

于 2012-11-29T06:54:22.980 に答える