| Programming with MATLAB |
構造体配列の作成
代入ステートメントを使って構造体配列を作成
データを個々のフィールドに代入することにより、簡単な1行1列の構造体配列を作ることができます。MATLABは、ユーザがこの作業を続けるに従い、自動的に構造体を作ります。たとえば、この節の初めに示した1行1列のpatient構造体配列を作ります。
patient.name = 'John Doe'; patient.billing = 127.00; patient.test = [79 75 73; 180 178 177.5; 220 210 205];
patient
name: 'John Doe' billing: 127 test: [3x3 double]
patientは、3つのフィールドをもつ構造体を含む配列です。構造体配列を拡張するためには、構造体名の後にサブスクリプトを追加します。
patient(2).name = 'Ann Lane'; patient(2).billing = 28.50; patient(2).test = [68 70 68; 118 118 119; 172 170 169];
patient構造体配列は、サイズ[1 2]です。構造体配列が1つ以上の要素を含むならば、MATLABは配列名をタイプインしたときに個々のフィールドの内容を表示しないことに注意してください。その代わりに、構造体が含む情報の種類のまとめを表示します。
patient
patient =
1x2 struct array with fields:
name
billing
test
この情報を得るために関数fieldnamesを使うこともできます。fieldnamesは、フィールド名を含む文字列のセル配列を出力します。
構造体を拡張すると、MATLABは、つぎのことを満足するように、指定していないフィールドを空行列で満たします。
たとえば、patient(3).name = 'Alan Johnson'と入力すると、patient配列をサイズ[1
3]に拡張します。このとき、patient(3).billingと patient(3).test
は、空行列になります。
注意
フィールドのサイズは、配列内のすべての要素に対して一致する必要はありません。patientの例では、nameフィールドは異なる長さをもつことができ、testフィールドは異なるサイズの配列になっています。
|
関数structを使って、構造体配列を作成
関数structを使って、構造体からなる配列を前もって設定できます。その基本的な型は、つぎのものです。
str_array = struct('field1',val1,'field2',val2, ...)
ここで、引数は、フィールド名とその値です。フィールド値は、MATLAB データコンストラク、または、値のセル配列のいずれかで表現された単一値で設定できます。引数リストの中のすべてのフィールド値は、同じスケール(単一値、または、セル配列)でなければなりません。
前もって構造体配列を設定する2つの方法を使用することができます。これらの方法は、構造体フィールドが初期化される方法が異なるものです。たとえば、構造体フィールドtempとrainfallをもつ1行3列の構造体配列weatherを設定することを考えましょう。この配列を設定するには、つぎに示す3つの方法があります。
| 構造体 | 構造体配列内のデータのアクセス |