Programming with MATLAB | ![]() ![]() |
多次元配列の作成
多次元配列の作成に、2次元行列に使った方法を使うことができます。さらに、MATLABは多次元配列の作成に有効な特殊な結合関数を提供します。
インデックスを使って、配列の作成
多次元配列を作成する 1つの方法は、2次元配列を作成し、それを拡張することです。たとえば、つぎのような簡単な2次元配列
A
から始めます。
A = [5 7 8; 0 1 9; 4 3 6];
A
は3行3列の配列で、行の次元は3で、列の次元は3です。A
に3次元目を加えるために、つぎのようにします。
A(:,:,2) = [1 0 4; 3 5 6; 9 8 7]
A(:,:,1) = 5 7 8 0 1 9 4 3 6 A(:,:,2) = 1 0 4 3 5 6 9 8 7
同様の割り当てステートメントを使って、配列に行、列、ページを追加することができます。
多次元配列の拡張 A
を任意の次元に拡張するためには、つぎのようにします。
次元全体に同じ値を与えるために、MATLABのスカラ展開機能であるコロン演算子を利用することができます。
A(:,:,3) = 5; A(:,:,3) ans = 5 5 5 5 5 5 5 5 5
A
を、3-3-3-2の4次元配列に展開するためには、つぎのように入力してください。
A(:,:,1,2) = [1 2 3; 4 5 6; 7 8 9]; A(:,:,2,2) = [9 8 7; 6 5 4; 3 2 1]; A(:,:,3,2) = [1 0 1; 1 1 0; 0 1 1];
最初の2つの代入後、MATLABは対応する次元のサイズを維持するために、A
にゼロを設定することに注意してください。
関数を使って、配列の作成
2次元配列の作成方法と同じように、多次元配列を作成するために、randn
, ones
,
zeros
のようなMATLAB関数を使うことができます。ユーザが与える引数は、結果の配列に対応する次元のサイズを表わします。たとえば、一様分布の乱数の
4-3-2 の配列を作成するためには、つぎのようにします。
B = randn(4,3,2)
1つの定数値をもつ配列を作成するためには、関数repmat
を使います。repmat
は、配列の次元のベクトルとして(この場合、1行1列の配列として)配列を作ります。
B = repmat(5,[3 4 2]) B(:,:,1) = 5 5 5 5 5 5 5 5 5 5 5 5 B(:,:,2) = 5 5 5 5 5 5 5 5 5 5 5 5
関数catを使って、多次元配列の作成
関数cat
は、多次元配列の簡単な作成法です。指定した次元について配列のリストを連結していきます。
B = cat(dim,A1,A2
...)
A1
, A2
等は結合する配列で、dim
は配列を結合する次元です。たとえば、cat
を使って新しい配列を作るために、つぎのようにします。
B = cat(3,[2 8; 0 5],[1 3; 7 9]) B(:,:,1) = 2 8 0 5 B(:,:,2) = 1 3 7 9
関数cat
は、既存のデータと新しいデータを任意に組合わせることが可能です。さらに、cat
を入れ子の形式にすることができます。たとえば、下記の行は4次元配列を作成します。
A = cat(3,[9 2; 6 5],[7 1; 8 4]) B = cat(3,[3 5; 0 1],[5 6; 2 1]) D = cat(4,A,B,cat(3,[1 2; 3 4],[4 3;2 1]))
cat
は、必要ならば次元の間に"1"のサブスクリプトを自動的に加えます。たとえば、2-2-1-2
の配列を作成するためには、つぎのように入力します。
C = cat(4,[1 2; 4 5],[7 8; 3 2])
上記の場合では、cat
は最後の次元が1でない4次元配列を作成するために必要な次元を挿入します。dim
引数が5ならば、上記のステートメントは
2-2-1-1-2 の配列を作成します。結果、配列を表すインデックスに1
を加えます。4次元の場合の値8
にアクセスするためには、つぎの表現を使ってください。
![]() |
多次元配列 | 多次元配列に関する情報の取得 | ![]() |