Programming with MATLAB | ![]() ![]() |
セル配列を入れ子にする
セルは、他のセル配列を含んだり、セル配列の配列さえも含むことができます(セルでないデータを含んでいるセルは、leaf
cellと言われます)。ユーザは、入れ子の中括弧、セル
関数、直接代入ステートメントを使って、入れ子のセル配列を作ります。そして、個々のセル、セルのサブ配列、セル要素にアクセスしたり、それらを取り扱うことができます。
入れ子型の中括弧を使って、入れ子型の配列を作る。
入れ子型のセル配列を作成するために中括弧の組を入れ子にすることができます。たとえば、
clear A A(1,1) = {magic(5)}; A(1,2) = {{[5 2 8; 7 3 0; 6 7 3] 'Test 1'; [2-4i 5+7i] {17 []}}} A = [5x5 double] {2x2 cell}
代入ステートメントの右辺は、2組の中括弧で囲まれることに注意してください。最初の組は、セル配列A
のセル(1,2)
を表わします。2つ目の組は、2行2列のセル配列を外側のセルに
"package" します。
関数cellを使って、入れ子の配列を作る
関数cell
を使って、セル配列を入れ子にするためには、cell
の出力を既存のセルに割り当てます。
A = cell(1,2)
A(1,2)
内に2行2列のセル配列を作成します。 A(1,2) = {cell(2,2)}
A
を満たします。
A(1,1) = {magic(5)}; A{1,2}(1,1) = {[5 2 8; 7 3 0; 6 7 3]}; A{1,2}(1,2) = {'Test 1'}; A{1,2}(2,1) = {[2-4i 5+7i]}; A{1,2}(2,2) = {cell(1,2)} A{1,2}{2,2}(1) = {17};
上記のステップ3に示したステートメントを使って、直接代入により入れ子型のセル配列を作ることもできます。
入れ子型のセル配列のインデックス
入れ子型のセルにインデックスを付けるため、インデックス付けの式を結合します。サブスクリプトの最初の組は、セルの一番上の層にアクセスし、つぎの括弧の組は、つぎの層にアクセスします。
(1,1)
の5行5列の配列にアクセスするためには、A{1,1}
を使います。
(1,2)
の位置(1,1)
にある3行3列の配列にアクセスするためには、A{1,2}{1,1}
を使ってください。(1,2)
の2行2列のセル配列にアクセスするためには、A{1,2}
を使ってください。(1,2)
の位置(2,2)
にある空のセルにアクセスするためには、A{1,2}{2,2}{1,2}
を使ってください。
![]() |
セル配列内のデータの構造化 | セル配列と数値配列の変換 | ![]() |