主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

構造体配列

名前で整理するデータがある場合,構造体を使用してデータを格納できます。構造体は”“フィールドというコンテナーにデータを格納するため,指定した名前でアクセスできます。構造体フィールドでデータを作成,割り当て,アクセスするにはドット表記を使用します。フィールドに格納されている値が配列の場合,配列インデックス付けを使用して配列の要素にアクセスできます。複数の構造体を構造体配列として格納するときは,配列インデックス付けとドット表記を使用して,個々の構造体とそのフィールドにアクセスできます。

スカラー構造体の作成

最初に,患者に関するデータを格納するフィールドをもつ病人という構造体を作成します。次の図は,構造体がどのようにデータを格納するかを示しています。病人のような構造体は,変数が1つの構造体を格納するため,“スカラー構造体”とも呼ばれます。

ドット表記を使用してフィールド的名字计费,および测试を追加し,データを各フィールドに割り当てます。この例では,構文patient.nameによって構造体とその最初のフィールドの両方が作成されます。それに続くコマンドによって,さらにフィールドが追加されます。

patient.name =“John Doe”;病人。计费= 127; patient.test = [79 75 73; 180 178 177.5; 220 210 205]
病人=结构体字段:name: 'John Doe' billing: 127 test: [3x3 double]

フィールドの値へのアクセス

フィールドの作成後,引き続きドット表記を使用して,フィールドに格納される値にアクセスして変更できます。

たとえば,计费フィールドの値を変更します。

病人。计费= 512.00
病人=结构体字段:name: 'John Doe' billing: 512 test: [3x3 double]

また,ドット表記を使用してフィールドの値にアクセスすることもできます。たとえば,patient.testの値の棒グラフを作成します。patient.nameのテキストを使用してタイトルを追加します。フィールドに配列が格納されている場合,この構文は配列全体を返します。

标题栏(patient.test) (“测试结果”+ patient.name)

图中包含一个坐标轴。标题为“测试John Doe的结果”的轴包含3个类型为bar的对象。

フィールドに格納されている配列の一部にアクセスするには,配列のサイズと型に合わせて適切なインデックスを追加します。たとえば,patient.testの1つの列にあるデータの棒グラフを作成します。

栏(patient.test (: 1))

图中包含一个坐标轴。坐标轴包含bar类型的对象。

非スカラー構造体配列へのインデックス付け

構造体配列は非スカラー値になることがあります。配列内の各構造体のフィールドが同じである限り,任意のサイズの構造体配列を作成できます。

たとえば2番目の患者に関するデータをもつ病人に2番目の構造体を追加します。また,最初の構造体の计费フィールドに元の値127を割り当てます。現在,配列には2つの構造体があるため,病人(1)。计费= 127のようにインデックスを付けることで最初の構造体にアクセスしなければなりません。

(2) . name =“安巷”;(2) .billing病人= 28.50; patient(2).test = [68 70 68; 118 118 119; 172 170 169]; patient(1).billing = 127
病人=1×2带有字段的结构数组:名字计费测试

結果として,病人は図に示したコンテンツをもつ1行2列の構造体配列です。

配列に格納されている各患者のデータは,结构体クラスの型をもつ構造体です。構造体の配列は”结构体配列“と呼ばれることがあります。ただし。”结构体配列“および“構造体配列“という用語は同じことを意味しています。他のMATLAB®配列と同様に,構造体配列には任意の次元を使用できます。

構造体配列には以下のような特徴があります。

  • 配列内の構造体はすべてフィールド数が同じ。

  • 各フィールド名はすべての構造体で同じ。

  • 同名のフィールドであっても構造体が異なれば,データ型やサイズの異なるデータを格納できる。

一部のフィールドを指定せずに配列に新しい構造体を追加する場合,未指定のフィールドには空の配列が含まれます。

(3) . name =“新名字”;病人(3)
ans =结构体字段:name: 'New name ' billing: [] test: []

構造体配列にインデックスを付けるには,配列のインデックス付けを使用します。たとえば,病人(2)は2番目の構造体を返します。

病人(2)
ans =结构体字段:name: 'Ann Lane' billing: 28.5000 test: [3x3 double]

フィールドにアクセスするには,配列インデックス付けとドット表記を使用します。たとえば2番目の患者の计费フィールドの値を返します。

(2) .billing病人
ans = 28.5000

フィールドによって格納されている配列にインデックスを付けることもできます。病人(2)testの最初の2つの列のみを表示する棒グラフを作成します。

栏(病人(2)。测试(:,(1 2)))

图中包含一个坐标轴。坐标轴包含两个bar类型的对象。

メモ

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

参考

||

関連するトピック