Programming and Data Types    

サブスクリプトを使ったリファレンスの取り扱い

代入ステートメントの右辺側にあるオブジェクトをサブスクリプト、または、フィールド識別子と共に使うことは、サブスクリプトを使ったリファレンス(subscripted reference)として知られています。MATLABは、このような場合、subsrefと名付けたメソッドを呼びます。オブジェクトのサブスクリプト化されたリファレンスは、3つの型、配列インデックス、セル配列インデックス、構造体フィールド名からなります。

これらの各々は、classディレクトリ内のsubsreffメソッドにMATLABにより読み込まれます。MATLABは、2つの引数をsubsrefに渡します。

最初の引数は、参照されるオブジェクトです。二番目の引数Sは、2つのフィールドをもつ構造体配列です。

たとえば、つぎの表現

は、MATLABにセルsubsref(A,S)を呼び出します。ここで、Sはつぎの要素

をもつ1行1列の構造体です。同様に、つぎの表現

は、つぎのものを使います。

つぎの表現

は、subsref(A,S)を呼びます。ここで、

この簡単な呼び出しを組み合わせて、より複雑なサブスクリプトを使った表現に適用できます。このような場合、length(S)は、サブスクリプトを使ったレベル数です。たとえば、

は、subsref(A,S)を呼びます。ここで、Sは、つぎの値をもつ3行1列の構造体配列です。

subsrefの書き方

subsrefメソッドは、MATLABによって渡されるサブスクリプトを使った表現を解釈 します。通常のアプローチは、switchステートメントを使って、使用するインデッ クス機能のタイプを決定し、実際のインデックスを取得します。つぎの3つの分 割されたコードは、入力引数の解釈法を示しています。各々の場合、関数は、値 Bを出力します。

配列インデックスに対して、

セル配列に対して、

構造体配列に対して、

subsrefメソッドの例題

subsrefメソッドの例題は、つぎの節を参照してください。


  subsrefとsubsasgnを使用したインデックス付きリファレンス サブスクリプトを使った代入