Main Content

subsref

説明

R2021b 以降で作成されたクラスについて、インデックス付けをカスタマイズする際に推奨されるプロセスは、matlab.mixin.indexing.RedefinesParenmatlab.mixin.indexing.RedefinesDot および matlab.mixin.indexing.RedefinesBrace のいずれかの組み合わせから継承することです。詳細については、オブジェクトのインデックス付けのカスタマイズを参照してください。

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

すべて折りたたむ

この例では、MATLAB® において、次のインデックス式で subsref を呼び出す方法を説明します。

A = magic(5);
A(1:2,:)
ans = 2×5

    17    24     1     8    15
    23     5     7    14    16

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

この例では、MATLAB® において、中かっこを使用するインデックス式で subsref を呼び出す方法を説明します。

C = {"one", 2, 'three'};
C{1:2}
ans = 
"one"
ans = 2

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

この例では、MATLAB® において、ドット表記を使用するインデックス式で subsref を呼び出す方法を説明します。

A = struct('number',10);
A.number
ans = 10

構文 A.numberB = subsref(A,S) を呼び出します。ここで、S.Type'.'S.subs'number' です。

入力引数

すべて折りたたむ

インデックス付きオブジェクト配列。MATLAB により、インデックス式の一部であるオブジェクト配列として渡されます。

インデックス付け構造体。MATLAB により、subsref の呼び出しを引き起こしたインデックス式に対するインデックス付け substruct として渡されます。この構造体には次のフィールドがあります。

  • type(){}、または . を含む文字ベクトルまたは string スカラー。添字のタイプを指定します。

  • subs – 実際の添字を含む cell 配列、文字ベクトル、または string スカラー。

インデックス式では複数のレベルを使用して、より複雑な式を形成できます。たとえば、A{1}.field(3:5) には 3 つのレベルのインデックス付けがあります。この式では、S は、次のフィールドをもつ 3 行 1 列の構造体配列となります。

disp(S(1))
    type: '{}'
    subs: {[1]}
disp(S(2))
    type: '.'
    subs: 'field'
disp(S(3))
    type: '()'
    subs: {[3 4 5]}

データ型: struct

出力引数

すべて折りたたむ

インデックス式の結果。

詳細

すべて折りたたむ

インデックス式の理解

A(I) は、添字ベクトル I によって指定された A の要素から形成された配列です。結果の配列は I と同じサイズになります。ただし、AI のどちらもベクトルという特殊なケースを除きます。その場合、A(I) の要素数は I と同じになりますが、A の方向をもちます。

A(I,J)A の長方サブ行列の要素から形成される配列です。添字ベクトル I および J によって指定されます。結果の配列は length(I)length(J) 列となります。添字として使用されているコロンは、その次元のすべての要素を示します。たとえば、A(I,:) はベクトル I で指定された行のすべての列を意味します。同様に、A(:,J) は、J で指定された列のすべての行を意味します。

A(I,J,K,...) は添字によって指定された配列です。結果は、length(I) x length(J) x length(K)... となります。

A{I} (A は cell 配列、I はスカラー) は、指定された A の cell の配列のコピーを形成します。I が複数の要素をもつ場合、この式はコンマ区切りリストとなります。A{3,4} のように、スカラー要素を指定する複数の添字を使用することもできます。

A(I).field (A は構造体配列、I はスカラー) は、field という名前のフィールド内の配列のコピーを形成します。I が複数の要素をもつ場合、この式はコンマ区切りリストとなります。A が 1 行 1 列の構造体配列の場合、添字を省略できます。この場合、A.fieldA(1).field と同じになります。

拡張機能

バージョン履歴

R2006a より前に導入