構造体配列
名前で整理するデータがある場合、構造体を使用してデータを格納できます。構造体は "フィールド" というコンテナーにデータを格納するため、指定した名前でアクセスできます。構造体フィールドでデータを作成、割り当て、アクセスするにはドット表記を使用します。フィールドに格納されている値が配列の場合、配列インデックス付けを使用して配列の要素にアクセスできます。複数の構造体を構造体配列として格納するときは、配列インデックス付けとドット表記を使用して、個々の構造体とそのフィールドにアクセスできます。
スカラー構造体の作成
最初に、患者についてのデータを格納するフィールドをもつ patient という名前の構造体を作成します。次の図は、この構造体にデータをどのように格納するかを示したものです。patient のような構造体は、変数に 1 つの構造体を格納することから、"スカラー構造体" とも呼ばれます。

ドット表記を使用してフィールド name、billing、および test を追加し、各フィールドにデータを代入します。この例では、構文 patient.name で構造体とその最初のフィールドの両方が作成されます。それに続くコマンドで他のフィールドを追加しています。
patient.name = 'John Doe';
patient.billing = 127;
patient.test = [79 75 73; 180 178 177.5; 220 210 205]patient = struct with fields:
name: 'John Doe'
billing: 127
test: [3×3 double]
フィールドの値へのアクセス
フィールドを作成した後も、ドット表記を使用することで、格納された値にアクセスして変更することができます。
たとえば、billing フィールドの値を変更します。
patient.billing = 512.00
patient = struct with fields:
name: 'John Doe'
billing: 512
test: [3×3 double]
ドット表記を使用して、任意のフィールドの値にアクセスすることもできます。たとえば、patient.test の値から棒グラフを作成します。patient.name のテキストを使用してタイトルを追加します。フィールドに配列が格納されている場合、この構文は配列全体を返します。
bar(patient.test)
title("Test Results for " + patient.name)
フィールドに格納されている配列の一部にアクセスするには、配列のサイズと型に応じたインデックスを追加します。たとえば、patient.test の 1 つの列のデータから棒グラフを作成します。
bar(patient.test(:,1))

非スカラー構造体配列へのインデックス付け
構造体配列は非スカラーにすることもできます。配列内の各構造体のフィールドが同じであれば、任意のサイズの構造体を作成できます。
たとえば、2 人目の患者に関するデータをもつ 2 番目の構造体を patients に追加します。さらに、最初の構造体の billing フィールドに元の値の 127 を代入します。配列に含まれる構造体が 2 つになったため、最初の構造体にアクセスするには patient(1).billing = 127 のようにインデックスを付ける必要があります。
patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68 70 68; 118 118 119; 172 170 169];
patient(1).billing = 127patient=1×2 struct array with fields:
name
billing
test
結果として、patient は次の図のような内容の 1 行 2 列の構造体配列になります。

配列内の各患者のレコードは、クラス struct の構造体です。構造体の配列は "struct 配列" と呼ばれることもあります。ただし、"struct 配列" と "構造体配列" という用語は同じものを意味します。他の MATLAB® 配列と同様に、構造体配列は任意の次元にすることができます。
構造体配列には次のような性質があります。
配列内のすべての構造体が同じ数のフィールドをもつ。
すべての構造体が同じ名前のフィールドをもつ。
同じ名前のフィールドに構造体ごとに異なる型またはサイズのデータを格納できる。
すべてのフィールドを指定せずに配列に新しい構造体を追加すると、未指定のフィールドには空の配列が格納されます。
patient(3).name = 'New Name';
patient(3)ans = struct with fields:
name: 'New Name'
billing: []
test: []
構造体配列にインデックスを付けるには、配列インデックス付けを使用します。たとえば、patient(2) は 2 番目の構造体を返します。
patient(2)
ans = struct with fields:
name: 'Ann Lane'
billing: 28.5000
test: [3×3 double]
フィールドにアクセスするには、配列インデックス付けとドット表記を使用します。たとえば、2 人目の患者の billing フィールドの値を返します。
patient(2).billing
ans = 28.5000
フィールドに格納された配列にインデックスを付けることもできます。patient(2).test の最初の 2 列のみを表示する棒グラフを作成します。
bar(patient(2).test(:,[1 2]))

メモ
構造体配列の 1 つの要素を参照する場合にのみ、フィールドの部分にインデックスを付けることができます。MATLAB® では、構造体配列の複数の要素のフィールドにインデックスを付けようと試みるステートメント (たとえば、patient(1:2).test(1:2,2:3) など) はサポートされません。代わりに、関数 arrayfun を使用してください。
参考
struct | fieldnames | isfield