Programming with MATLAB    

構造体配列の作成

2つの方法で構造体を作ることができます。

代入ステートメントを使って構造体配列を作成

データを個々のフィールドに代入することにより、簡単な1行1列の構造体配列を作ることができます。MATLABは、ユーザがこの作業を続けるに従い、自動的に構造体を作ります。たとえば、この節の初めに示した1行1列のpatient構造体配列を作ります。

つぎのように入力します。

コマンドラインでの結果は、つぎのようになります。

patientは、3つのフィールドをもつ構造体を含む配列です。構造体配列を拡張するためには、構造体名の後にサブスクリプトを追加します。

patient構造体配列は、サイズ[1 2]です。構造体配列が1つ以上の要素を含むならば、MATLABは配列名をタイプインしたときに個々のフィールドの内容を表示しないことに注意してください。その代わりに、構造体が含む情報の種類のまとめを表示します。

この情報を得るために関数fieldnamesを使うこともできます。fieldnamesは、フィールド名を含む文字列のセル配列を出力します。

構造体を拡張すると、MATLABは、つぎのことを満足するように、指定していないフィールドを空行列で満たします。

たとえば、patient(3).name = 'Alan Johnson'と入力すると、patient配列をサイズ[1 3]に拡張します。このとき、patient(3).billingpatient(3).test は、空行列になります。

関数structを使って、構造体配列を作成

関数structを使って、構造体からなる配列を前もって設定できます。その基本的な型は、つぎのものです。

ここで、引数は、フィールド名とその値です。フィールド値は、MATLAB データコンストラク、または、値のセル配列のいずれかで表現された単一値で設定できます。引数リストの中のすべてのフィールド値は、同じスケール(単一値、または、セル配列)でなければなりません。

前もって構造体配列を設定する2つの方法を使用することができます。これらの方法は、構造体フィールドが初期化される方法が異なるものです。たとえば、構造体フィールドtemprainfallをもつ1行3列の構造体配列weatherを設定することを考えましょう。この配列を設定するには、つぎに示す3つの方法があります。

方法
シンタックス
初期化
struct
weather(3) =   struct('temp',72,'rainfall',0.0);
weather(3) は、示されるフィールド値を使って初期化されます。配列内の他の構造体に対するフィールドweather(1)weather(2) は、空行列で初期化されます。
struct with repmat
weather =   repmat(struct('temp',72,   'rainfall',0.0),1,3);
weather配列内のすべての構造体は、1セットのフィールド値を使って初期化されます。
struct with cell array syntax
weather = struct('temp',{68,80,72},   'rainfall',{0.2,0.4,0.0});
weather配列内の構造体は、セル配列で設定したフィールド値を使って初期化されます。


  構造体 構造体配列内のデータのアクセス