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つの方法があります。
![]() |
構造体 | 構造体配列内のデータのアクセス | ![]() |