このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
subsref
添字を使った参照
説明
R2021b 以降で作成されたクラスについて、インデックス付けをカスタマイズする際に推奨されるプロセスは、matlab.mixin.indexing.RedefinesParen
、matlab.mixin.indexing.RedefinesDot
および matlab.mixin.indexing.RedefinesBrace
のいずれかの組み合わせから継承することです。詳細については、オブジェクトのインデックス付けのカスタマイズを参照してください。
例
小かっこインデックス
この例では、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)
を呼び出します。ここで、S
は S.type
が '()'
で S.subs
が {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.number
は B = subsref(A,S)
を呼び出します。ここで、S.Type
は '.'
、S.subs
は 'number'
です。
入力引数
A
— インデックス付きオブジェクト配列
任意のオブジェクト
インデックス付きオブジェクト配列。MATLAB により、インデックス式の一部であるオブジェクト配列として渡されます。
S
— インデックス付け構造体
特殊なインデックス付け構造体
インデックス付け構造体。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
出力引数
B
— インデックス式の結果
任意の型の値
インデックス式の結果。
詳細
インデックス式の理解
A(I)
は、添字ベクトル I
によって指定された A
の要素から形成された配列です。結果の配列は I
と同じサイズになります。ただし、A
と I
のどちらもベクトルという特殊なケースを除きます。その場合、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.field
は A(1).field
と同じになります。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
tall 配列は、インデックス付け操作の限られたサブセットをサポートします。詳細については、tall 配列要素のインデックス付けと表示を参照してください。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
cell 配列に対する中かっこによるインデックスと構造体に対するドット インデックスはサポートされていません (GPU 配列では cell 配列または構造体はサポートされません)。
スパースの GPU 配列では、インデックスによる参照が行全体または列全体に対してのみサポートされます。たとえば、
A(5,:)
またはA(5,1:end)
を呼び出してスパース行列A
の 5 行目にアクセスできます。
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
使用上の注意事項および制限事項:
cell 配列の中かっこインデックスと構造体のドット インデックスはサポートされません。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)