Programming with MATLAB | ![]() ![]() |
インデックス付け
2次元配列に適用する概念の多くは、多次元配列にも拡張されます。
多次元配列の1つの要素にアクセスするためには、整数のサブスクリプトを使います。各サブスクリプトは1番目のインデックスを行の次元に、2番目のインデックスを列の次元に、3番目のインデックスを最初のページの次元に、等々、インデックス付けを行います。
nddata = fix(8*
randn(10,5,3));
たとえば、nddata
のページ2の要素(3,2)
にアクセスするためには、nddata(3,2,2)
を使ってください。
配列のサブスクリプトとしてベクトルを使うことができます。この場合、各ベクトルの要素は配列の次元により定義される領域内で有効なサブスクリプトでなければなりません。nddata
のページ3の要素(2,1)
,
(2,3)
, (2,4)
にアクセスするためには、つぎのようにしてください。
nddata(2,[1 3 4],3)
コロンと多次元配列のインデックス
MATLABのコロンを使ったインデックス付けは、多次元配列にも拡張されます。たとえば、nddata
のページ2の3番目の列にアクセスするためには、nddata(:,3,2)
を使ってください。
コロン演算子は、データのサブセットにアクセスするのにも有効です。たとえば、nddata(2:3,2:3,1)
は、ページ1のデータのサブセットである2行2列の配列になります。この行列は、配列の最初のページの2
行目、3
行目と2
列目、3
列目のデータから成り立ちます。
コロン演算子は、代入ステートメントの両辺で配列のサブスクリプトとして表わすことができます。たとえば、ゼロからなる4行4列の配列を作成するためには、つぎのようにします。
C = zeros(4,4)
配列nddata
の2行2列のサブセットをC
の中央の4要素に代入します。
C(2:3,2:3) = nddata(2:3,1:2,2)
多次元配列のインデックス付けのあいまいさを防ぐ
A(:,:,2) = 1:10
は、データを受け取る側の次元の形についての情報を与えないため、あいまいな表現です。上記の例で、ステートメントは1次元ベクトルを2次元のものに代入しようとします。MATLABは、そのような場合、エラーを出力します。あいまいさを解決するためには、代入するデータに対する対象物(左側の型)すなわち、データの型と対象物に関する十分な情報が必要です。たとえば、つぎのようにです。
A(1,:,2) = 1:10;
![]() |
多次元配列を使った操作 | サイズの変更 | ![]() |