5

たとえば、次のような構造ファイルのセル配列を作成しました。

>> res2

res2 = 

  Columns 1 through 7

    [1x1 struct]    [1x1 struct]    [1x1 struct]    [1x1 struct]    [1x1 struct]    [1x1 struct]    [1x1 struct]

  Columns 8 through 10

    [1x1 struct]    [1x1 struct]    [1x1 struct]



>> res2{1}

ans = 

    nchi005_randchi005: 0.1061
          nfdr_randfdr: 0.0011
          nlgt_randlgt: 2.9517e-004
      nphast_randphast: 0.6660
           ndd_rand_dd: 0.0020
    ndd_rand_dd_larger: 1

    >> res2{1}.nlgt_randlgt

ans =

  2.9517e-004


>> res{:}.nlgt_randlgt
??? Bad cell reference operation.

res2-cellarray のすべての nlgt_randlgt-fields に一度にアクセスする可能性はありますか?

4

2 に答える 2

5

必要なのはres2、セル配列から構造体配列に変換することだけです ( を使用cell2mat)。その後、希望する方法で構造体メンバーを取得できます。次に例を示します。ここで、cdatは 2 つのメンバーを持つ構造体のセル配列でありs1s2です。

cdat = 

    [1x1 struct]    [1x1 struct]    [1x1 struct]    [1x1 struct]    [1x1 struct]    [1x1 struct]    [1x1 struct]    [1x1 struct]    [1x1 struct]    [1x1 struct]

>> dat = cell2mat(cdat)

dat = 

1x10 struct array with fields:
    s1
    s2

>> [dat(:).s1]

ans =

     1     1     1     1     1     1     1     1     1     1
于 2012-07-12T01:45:43.643 に答える
2

次の方法でセルにアクセスできます。

cellfun(@(r) r.nlgt_randlgt, res2);
于 2012-07-12T16:14:42.927 に答える