Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

cell 配列のデータへのアクセス

この例では、cell 配列に対するデータの読み取りと書き込みを行う方法を示します。

テキストと数値データの 2 行 3 列の配列を作成します。

C = {'one', 'two', 'three'; 
     1, 2, 3}
C=2×3 cell array
    {'one'}    {'two'}    {'three'}
    {[  1]}    {[  2]}    {[    3]}

cell 配列の要素を参照する方法が 2 つあります。cell のセットを参照する場合 (たとえば、配列のサブセットを定義する場合) は、インデックスを小かっこ () で囲みます。セル内のテキスト、数値、その他のデータを参照する場合は、インデックスを中かっこ {} で囲みます。

小かっこ () によるセルへのインデックス付け

小かっこ内の cell 配列インデックスはセルのセットを参照します。たとえば、C のサブセットである 2 行 2 列の cell 配列を作成するために、小かっこを使用します。

upperLeft = C(1:2,1:2)
upperLeft=2×2 cell array
    {'one'}    {'two'}
    {[  1]}    {[  2]}

セルのセットを同数のセルと置き換えることにより更新します。たとえば、C の最初の行の cell を同等サイズ (1 行 3 列) の cell 配列と置き換えます。

C(1,1:3) = {'first','second','third'}
C=2×3 cell array
    {'first'}    {'second'}    {'third'}
    {[    1]}    {[     2]}    {[    3]}

配列内の cell が数値データを含んでいる場合は、関数 cell2mat を使用して、cell を数値配列に変換できます。

numericCells = C(2,1:3)
numericCells=1×3 cell array
    {[1]}    {[2]}    {[3]}

numericVector = cell2mat(numericCells)
numericVector = 1×3

     1     2     3

numericCells は 1 行 3 列の cell 配列ですが、numericVectordouble 型の 1 行 3 列の配列です。

中かっこ {} によるコンテンツへのインデックス付け

中かっこでインデックスを付けることにより、セルの内容 (セル内の数値、テキスト、その他のデータ) にアクセスします。たとえば、C の最後の cell の内容にアクセスするために、中かっこを使用します。

last = C{2,3}
last = 3

cell が double 値を含んでいるので、lastdouble 型の数値変数です。

同様に、中かっこでインデックスを付けてセルの内容を置き換えることができます。

C{2,3} = 300
C=2×3 cell array
    {'first'}    {'second'}    {'third'}
    {[    1]}    {[     2]}    {[  300]}

中かっこでインデックスを付けることにより、複数のセルの内容にアクセスできます。MATLAB® はセルの内容を "コンマ区切りリスト" として返します。各セルが異なるデータの型を含むことができるので、このリストを 1 つの変数に代入することはできません。しかし、リストをセルと同数の変数に代入することはできます。MATLAB® は列順で変数に代入します。

C の 4 つの cell の内容を 4 つの変数に代入します。

[r1c1, r2c1, r1c2, r2c2] = C{1:2,1:2}
r1c1 = 
'first'
r2c1 = 1
r1c2 = 
'second'
r2c2 = 2

各 cell が同じ型のデータを含んでいる場合は、配列連結演算子 [] をコンマ区切りリストに適用することにより 1 つの変数を作成することができます。

2 番目の行の内容を 1 つの数値配列に連結します。

nums = [C{2,:}]
nums = 1×3

     1     2   300

参考

|

関連するトピック