2

作成しなかった構造内に埋め込まれた要素を参照しようとしています(したがって、それが構築された正確な方法がわかりません)。

構造をロードした後、次のように入力します。

dataFile.RECORDINGS.eye

次の出力を受け取ります。

ans =

    2


ans =

    2

これらの変数は両方とも常に同じですが、いつでも1、2、または3になる可能性があります。私がやりたいのは、次のようなswitchステートメントで確認することです。

switch dataFile.RECORDINGS.eye
    case {1, 2}
        % action A
    case 3
        % action B
end

もちろん、そのアドレスの下に2つの要素が格納されているため、'case'はdataFile.RECORDINGS.eyeに指定された値が含まれているかどうかを確認できないため、上記はエラーをスローします。だから、私の質問は、要素の1つだけを参照するにはどうすればよいですか?最初の行を次のように置き換えるのと同じくらい簡単だと思いました。

switch dataFile.RECORDINGS.eye(1)

...しかし、これはエラーになります:

??? Field reference for multiple structure elements that is followed by more reference blocks is an error.

同様に、次のような要素にアクセスすることはできません。

switch dataFile.RECORDINGS.eye.1

...次のエラーが発生したため:

??? Dot name reference on non-scalar structure.
4

2 に答える 2

5

値が実際に常に同じである場合は、次のことを試して、switchコマンドで使用できるスカラーを取得できます。

unique([dataFile.RECORDINGS.eye])

ちなみに、RECORDINGSのインデックスを作成しようとしましたか?

dataFile.RECORDINGS(1).eye   
dataFile.RECORDINGS(2).eye
于 2012-05-24T14:03:32.457 に答える
3

おそらく、複数の要素を持つ代わりに、それぞれが?の単一の値をeye持つ複数の要素があります。あなたが望むかもしれませんまたは。RECORDINGSeyedataFile.RECORDINGS(1).eyedataFile.RECORDINGS(2).eye

于 2012-05-24T14:06:47.097 に答える