Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

sub2ind

添字から線形インデックスへの変換

説明

ind = sub2ind(sz,row,col) は、サイズ sz の行列について、rowcol の行と列の添字に対応する線形インデックス ind を返します。ここで、sz は 2 要素ベクトルで、sz(1) は行数、sz(2) は列数を指定します。

ind = sub2ind(sz,I1,I2,...,In) は、サイズ sz の多次元配列について、n 個の配列 I1,I2,...,In の多次元添字に対応する線形インデックス ind を返します。ここで、sz は、配列の各次元のサイズを指定する n 要素ベクトルです。

すべて折りたたむ

3 行 3 列の行列の添字 (位置によるインデックス付け) から線形インデックスへのマッピングは、次のように説明できます。

3 行 3 列の行列の行と列の添字を指定します。添字を線形インデックスに変換します。

row = [1 2 3 1];
col = [2 2 2 3];
sz = [3 3];
ind = sub2ind(sz,row,col)
ind = 1×4

     4     5     6     7

2×2×2 の配列の添字から線形インデックスへのマッピングは、次のように説明できます。

2×2×2 の配列の行、列およびページの添字を指定します。添字を線形インデックスに変換します。

I1 = [1 2 1 2];
I2 = [2 2 1 1];
I3 = [1 1 2 2];
sz = [2 2 2];
ind = sub2ind(sz,I1,I2,I3)
ind = 1×4

     3     4     5     6

3 次元配列の添字のインデックスを単一の線形インデックスに変換します。

配列を作成し、(2,1,2) の位置の要素に対応する線形インデックスを求めます。

A = rand(3,4,2);
linearInd = sub2ind(size(A),2,1,2)
linearInd = 14

両方のバージョンのインデックスが同じ要素を参照していることを確認します。

A(2,1,2)
ans = 0.4854
A(14)
ans = 0.4854

入力引数

すべて折りたたむ

配列のサイズ。正の整数のベクトルとして指定します。このベクトルの各要素は対応する次元のサイズを示します。たとえば、[2 3 4] は 2×3×4 の配列を定義します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

行の添字。スカラー、ベクトル、行列または多次元配列として指定します。row のサイズは col のサイズと同じでなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

列の添字。スカラー、ベクトル、行列または多次元配列として指定します。col のサイズは row のサイズと同じでなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

多次元の添字。スカラー、ベクトル、行列または多次元配列として指定します。各配列 I1,I2,…,In のサイズは同じでなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

出力引数

すべて折りたたむ

線形インデックス。スカラー、ベクトル、行列または多次元配列として指定します。ind のサイズは、入力 rowcol または I1,I2,…,In のサイズと同じです。

データ型: double

アルゴリズム

配列 A について、ind = sub2ind(size(A),I1,…,In) である場合、すべての k について A(ind(k)) = A(I1(k),…,In(k)) です。

拡張機能

バージョン履歴

R2006a より前に導入