ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

subsref

添字を使用したオブジェクトの参照の再定義

構文

B = subsref(A,S)

説明

B = subsref(A,S) は、A がオブジェクトの場合、構文 A(i)A{i} または A.i に対して MATLAB® により呼び出されます。

MATLAB では、組み込み関数 subsref を使用して、インデックスが付けられたオブジェクトへの参照を解釈します。オブジェクトのインデックス付きの参照動作を変更するには、クラス内に subsref をオーバーロードします。

入力引数

A

インデックス付け操作で使用されるオブジェクト

S

2 つのフィールド typesubs のある構造体。複合型のインデックス式の場合、S はインデックスの各レベルごとに 1 つの構造体をもつ、構造体の配列です。

  • type'()''{}' または '.' を含む char ベクトルで、使用されるインデックス付けのタイプを示します。

  • subs は、実際の添字を含むセル配列または文字配列です。

出力引数

B

インデックス付きの式の結果。

subsref メソッドの実装で出力が返されない、または 1 つより多い出力が返される場合、出力引数に varargout を使用します。詳細については、「subsref メソッドおよび subsasgn メソッドの構文」を参照してください。

以下の式で MATLAB が subsref を呼び出す方法を示します。

A(1:2,:)

構文 A(1:2,:) は、B = subsref(A,S) を呼び出します。S は、S.type='()' かつ S.subs={1:2,':'} である 1 行 1 列の構造体です。コロン記号 ':' は、コロンが添字として使用されたことを示します。

以下の式で MATLAB が subsref を呼び出す方法を示します。

A{1:2}

構文 A{1:2} は、B = subsref(A,S) を呼び出します。ここで、S.type='{}' かつ S.subs={[1 2]} です。

以下の式で MATLAB が subsref を呼び出す方法を示します。

A.field

構文 A.field は、B = subsref(A,S) を呼び出します。ここで、S.type='.' かつ S.subs='field' です。

以下の式で MATLAB が subsref を呼び出す方法を示します。

A(1,2).name(3:5)

単純な呼び出しを簡単な方法で組み合わせることで、さらに複雑なインデックス式になります。ここで、length(S) は添字を使用しているレベル数です。たとえば、S が、次の値をもつ 3 行 1列の構造体配列のとき、A(1,2).name(3:5) は、subsref(A,S) を呼び出します。

S(1).type='()'S(2).type='.'S(3).type='()'
S(1).subs={1,2}S(2).subs='name'S(3).subs={[3 4 5]}

ヒント

クラスで定義された subsref メソッド内では MATLAB が組み込みの subsref を呼び出します。組み込み関数を呼び出すことで、特化したインデックス付けを定義する際に既定のインデックス付け動作を使用できるようになります。詳細は、「メソッドで呼び出される組み込みの subsref および subsasgn」を参照してください。

R2006a より前に導入

この情報は役に立ちましたか?