7

a= struct('a1',{1,2,3},'a2',{4,5,6})

1 の値を取得するにはどうすればよいですか。

エラーを返す a.a1{1} を使用しようとしています

>> a.a1{1}
??? Field reference for multiple structure elements that is followed by more reference blocks is an
error.

1 にアクセスするにはどうすればよいですか? ありがとう。

編集 A = struct{'a1',[1 2 3],'a2',[4 5 6]}

どうすればアクセスできますか 1. 使用しますA(1).a1が、1 2 3

4

1 に答える 1

14

代わりにこれを行う必要があります:

a(1).a1

その理由は、構造体を作成するために使用するコードが実際に 3 要素の構造体配列を作成するためです。最初の配列要素には and が含まれa1: 1a2: 42 番目の配列要素には and が含まれa1: 2a2: 53 番目の配列要素には and が含まれa1: 3ますa2: 6

STRUCT{}の呼び出しで中かっこを使用する場合、MATLAB は、セルの内容を構造体配列要素全体に分散する構造体配列を作成しようとしていると想定します。フィールドに cell 配列が含まれる単一の 1 行 1 列の構造体要素を代わりに作成する場合は、次のように、cell 配列を囲む中かっこのセットを追加する必要があります。

a = struct('a1',{{1,2,3}},'a2',{{4,5,6}});

その後、オリジナルa.a1{1}が機能します。

編集:

次のように、セル配列の代わりに数値配列を使用して構造体を作成する場合:

A = struct('a1',[1 2 3],'a2',[4 5 6]);

次に、次のように 1 の値にアクセスできます。

A.a1(1)

MATLAB で構造体を操作する方法の詳細については、このドキュメンテーション ページを参照してください。

于 2011-02-18T17:24:05.017 に答える