4

「動的構造体参照への引数は有効なフィールド名に評価される必要があります」というエラーが発生します。spectDataという構造体があり、次のようになります

spectData{1} = 

data: [256x26 double]
textdata: {1x26 cell}
colheaders: {1x26 cell}
Row: [256x1 double]
Col: [256x1 double]
Cho: [256x1 double]
Cho0x25SD: [256x1 double]
Cho0x2FCit: [256x1 double]
PCho: [256x1 double]
PCho0x25SD: [256x1 double]

これを関数呼び出しで割り当てようとすると、コード行は次のようになります。これは、matlabがエラーの原因であると言っているコード行です。

 SDdata = spectData{sliceNum - firstSlice}.(MetabMapSDString);

ここで、metabStringは、たとえば「PCho0x25SD」などの名前の1つの文字列です。spectDataには、私が表示したものと同じように、合計4つのサブ構造体があります。私は何が間違っているのですか?ダブルなので大丈夫だと思いました。

4

2 に答える 2

11

文字列の代わりに誤ってセル配列を渡すと、Matlab はこの時々誤解を招くエラー メッセージを表示することがあります。次の例では、同じエラーが発生します。

fields = {'foo', 'bar'}
s = struct('foo', 23, 'bar', pi)

for f = fields
  disp(f)
  s.(f) = 0
end

これが問題である場合 (たとえば、フィールド名の実際の型を でテストしますwhos)、 と言うと役に立ちますf = char(f)

于 2013-01-09T14:08:40.060 に答える