6.3.3 Indexing Cell Arrays

Last-modified: 2025-03-21 (金) 21:14:36

6.3.3 セル配列のインデックス付け

セル配列の基本的な使用法に示されているように、セル配列から要素を抽出するには、「{' そして '}' 演算子を使用します。セル配列であるサブ配列を抽出またはアクセスする場合は、'(' そして ')' 演算子です。次の例はその違いを示しています。

c = {"1", "2", "3"; "x", "y", "z"; "4", "5", "6"};
c{2,3}
    ⇒ ans = z
c(2,3)
    ⇒ ans =
       {
         [1,1] = z
       }

だから「{}' ではセル配列の要素にアクセスしますが、 ' では()' セル配列のサブ配列にアクセスします。

「(' そして ')' 演算子を使用すると、多次元配列と同様にセル配列のインデックス付けが機能します。たとえば、セル配列の 1 列目と 3 列目のすべての行を0 次のコマンドで設定できます。

c(:, [1, 3]) = {0}
    ⇒ =
       {
         [1,1] = 0
         [2,1] = 0
         [3,1] = 0
         [1,2] = 2
         [2,2] = y
         [3,2] = 5
         [1,3] = 0
         [2,3] = 0
         [3,3] = 0
       }

なお、上記は次のようにも実現できます。

c(:, [1, 3]) = 0;

ここで、スカラー「0' は自動的にセル配列に昇格されます '{0}' となり、 のサブ配列に割り当てられますc。

セル配列のインデックス付けの別の例をあげると、()' を使用すると、次のコマンドのようにセル配列の最初の行と 2 番目の行を交換することができます。

c = {1, 2, 3; 4, 5, 6};
c([1, 2], :) = c([2, 1], :)
    ⇒ =
       {
         [1,1] =  4
         [2,1] =  1
         [1,2] =  5
         [2,2] =  2
         [1,3] =  6
         [2,3] =  3
       }

' を使用してセル配列の複数の要素にアクセスする{' そして '}' 演算子を使用すると、要求されたすべての要素がコンマで区切られたリストが生成されます (コンマ区切りリストを参照)。'{' そして '}' 演算子を使用すると、上記の例の最初の 2 行を次のように入れ替えることができます。

[c{[1,2], :}] = deal (c{[2, 1], :})
    ⇒ =
       {
         [1,1] =  1
         [2,1] =  4
         [1,2] =  2
         [2,2] =  5
         [1,3] =  3
         [2,3] =  6
       }

構造体配列と数値配列の場合、空の行列「[]' はセル配列から要素を削除するために使用できます:

x = {"1", "2"; "3", "4"};
x(1, :) = []
    ⇒ x =
       {
         [1,1] = 3
         [1,2] = 4
       }

次の例は、セル配列要素の内容のみを削除し、そのスペースは削除しない方法を示しています。

x = {"1", "2"; "3", "4"};
x(1, :) = {[]}
⇒ x =
     {
       [1,1] = [](0x0)
       [2,1] = 3
       [1,2] = [](0x0)
       [2,2] = 4
     }

インデックス操作はセル配列に対して行われ、セル配列内のオブジェクトに対しては行われません。対照的に、cellindexmat各セル配列エントリ内のオブジェクトにマトリックス インデックスを適用し、要求された値を返します。

: y = cellindexmat (x, varargin)

セル配列内の行列のインデックス作成を実行します。

行列xのセル配列が与えられると、この関数は計算する。

Y = cell (size (X));
for i = 1:numel (X)
 Y{i} = X{i}(varargin{1}, varargin{2}, ..., varargin{N});
endfor

インデックス引数には、スカラー ( 2)、配列 ( [1, 3])、範囲 ( 1:3)、またはコロン演算子 ( ":") を使用できます。ただし、インデックス キーワードはend使用できません。
See also: cellslices, cellfun.