Programming with MATLAB    

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

構造体配列のインデックスを使って、構造体配列内の任意のフィールドやフィールド要素を取得することができます。同様に、任意のフィールドやフィールド要素に値を設定することができます。この節の例として、つぎの構造体を考えます。

標準のサブスクリプトを構造体配列名に加えることで、サブ配列にアクセスできます。たとえば、つぎのステートメントは、1行2列の構造体配列になります。

mypatients配列の中の最初の構造体は、patients配列の中の最初の構造体と同じです。

特別な構造体のフィールドにアクセスするため、構造体配列名の後にピリオド(.)、その後にフィールド名を設定します。

フィールド内の要素にアクセスするためには、フィールド名に適切なインデックス付けのメカニズムを追加してください。すなわち、フィールドが配列を含めば、配列のサブスクリプトを使ってください。フィールドがセル配列を含めば、セル配列のサブスクリプトを使ってください。

たとえば、構造体のフィールドに値を代入するために同じ表記法を使ってください。

複数の構造体に対して、一度にフィールド値を抽出することができます。たとえば、つぎのラインは、billingフィールドのすべてを含む1行3列のベクトルを作成します。

同様に、最初の2つの構造体に対して、testデータを含むセル配列を作成することができます。

setfieldとgetfieldを使って、フィールド値にアクセスする

直接インデックス法は、通常フィールド値を代入したり、取得するための最も効率の良い方法です。しかし、文字列としてのみフィールド名がわかっている場合、たとえば、M-ファイル内でフィールド名を得るために関数 fieldnamesを使った場合、同じことを行うために関数setfieldと関数getfieldを使うことができます。

getfield は、フィールド、または,フィールド要素から値を得ます。

ここで、field_indexはオプションで、array_index は、1行1列の構造体配列に対するオプションです。関数シンタックスは、つぎの式に対応します。

たとえば、patient配列の2番目の構造体のnameフィールドにアクセスするためには、つぎの式を使います。

同様に、setfieldは、つぎの構文を使って、フィールドに値を代入します。


  構造体配列の作成 構造体配列を使った関数sizeの使用