ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

num2cell

一定サイズのセルをもつ cell 配列への変換

説明

C = num2cell(A) は、配列 A の各要素を cell 配列 C の個別の cell に配置することによって、配列 A を cell 配列 C に変換します。

関数 num2cell は、非数値型を含むあらゆるデータ型の配列を変換します。

C = num2cell(A,dim) は、A の内容を C の個別の cell に分けます。ここで dim は各 cell に含める A の次元を指定します。dim はスカラーまたは次元をもつベクトルのいずれでも構いません。たとえば、A が 2 行 3 列の配列の場合には次のようになります。

  • num2cell(A,1) は、1 行 3 列の cell 配列 C を作成し、ここで各セルには A の 2 行 1 列の列が含まれます。

  • num2cell(A,2) は、2 X 1 の cell 配列 C を作成し、ここで各セルには A の 1 X 3 列が含まれます。

  • num2cell(A,[1 2]) は、1 行 1 列の cell 配列 C を作成し、ここで各セルには配列 A の全体が含まれます。

すべて折りたたむ

数値配列の全要素を個別のセルに配置します。

a = magic(3)
a = 3×3

     8     1     6
     3     5     7
     4     9     2

c = num2cell(a)
c = 3x3 cell array
    {[8]}    {[1]}    {[6]}
    {[3]}    {[5]}    {[7]}
    {[4]}    {[9]}    {[2]}

単語を構成する各文字を配列の個別のセルに配置します。

a = ['four';'five';'nine']
a = 3x4 char array
    'four'
    'five'
    'nine'

c = num2cell(a)
c = 3x4 cell array
    {'f'}    {'o'}    {'u'}    {'r'}
    {'f'}    {'i'}    {'v'}    {'e'}
    {'n'}    {'i'}    {'n'}    {'e'}

4 X 3 X 2 の数値配列を生成し、4 行 1 列の列ベクトルをもつ 1 X 3 X 2 の cell 配列を作成します。

A = reshape(1:12,4,3);
A(:,:,2) = A*10
A = 
A(:,:,1) =

     1     5     9
     2     6    10
     3     7    11
     4     8    12


A(:,:,2) =

    10    50    90
    20    60   100
    30    70   110
    40    80   120

C = num2cell(A,1)
C = 1x3x2 cell array
C(:,:,1) = 

    {4x1 double}    {4x1 double}    {4x1 double}


C(:,:,2) = 

    {4x1 double}    {4x1 double}    {4x1 double}

4 行 1 列の各ベクトルには、A の "最初の" 次元方向の要素が含まれています。

C{1}
ans = 4×1

     1
     2
     3
     4

1 行 3 列の数値配列で構成される 4 X 1 X 2 の cell 配列を作成します。

C = num2cell(A,2)
C = 4x1x2 cell array
C(:,:,1) = 

    {1x3 double}
    {1x3 double}
    {1x3 double}
    {1x3 double}


C(:,:,2) = 

    {1x3 double}
    {1x3 double}
    {1x3 double}
    {1x3 double}

1 行 3 列の各行ベクトルには、A の "2 番目の" 次元方向の要素が含まれています。

C{1}
ans = 1×3

     1     5     9

最後に、1 X 1 X 2 の数値配列で構成される 4 行 3 列の cell 配列を作成します。

C = num2cell(A,3)
C = 4x3 cell array
    {1x1x2 double}    {1x1x2 double}    {1x1x2 double}
    {1x1x2 double}    {1x1x2 double}    {1x1x2 double}
    {1x1x2 double}    {1x1x2 double}    {1x1x2 double}
    {1x1x2 double}    {1x1x2 double}    {1x1x2 double}

1 X 1 X 2 の各ベクトルには、A の "3 番目の" 次元方向の要素が含まれています。

C{1}
ans = 
ans(:,:,1) =

     1


ans(:,:,2) =

    10

複数の次元方向に要素を数値配列に組み合わせることにより cell 配列を作成します。

A = reshape(1:12,4,3);
A(:,:,2) = A*10
A = 
A(:,:,1) =

     1     5     9
     2     6    10
     3     7    11
     4     8    12


A(:,:,2) =

    10    50    90
    20    60   100
    30    70   110
    40    80   120

c = num2cell(A,[1 3])
c = 1x3 cell array
    {4x1x2 double}    {4x1x2 double}    {4x1x2 double}

4 X 1 X 2 の各配列には、A の最初と 3 番目の次元方向の要素が含まれています。

c{1}
ans = 
ans(:,:,1) =

     1
     2
     3
     4


ans(:,:,2) =

    10
    20
    30
    40

c = num2cell(A,[2 3])
c = 4x1 cell array
    {1x3x2 double}
    {1x3x2 double}
    {1x3x2 double}
    {1x3x2 double}

入力引数

すべて折りたたむ

入力は、任意の多次元配列タイプとして指定されます。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | cell | categorical | datetime | duration | calendarDuration | function_handle

正の整数または正の整数ベクトルとして指定される A の次元。dim は 1 から ndims(A) の間でなければなりません。

要素が数値順である必要はありません。しかし、num2cellC の各セルの配列の次元を並べ替えて、指定された次元の順序に一致させます。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

出力引数

すべて折りたたむ

cell 配列として返される、結果の配列。C のサイズは、A のサイズと dim の値に依存します。

  • dim が指定されていない場合は、CA と同じサイズです。

  • dim がスカラーの場合には、C には numel(A)/size(A,dim) 個のセルが含まれます。dim が 1 または 2 の場合には、各セルにはそれぞれ列ベクトルまたは行ベクトルが含まれます。dim > 2 の場合には、各セルには dim 番目の次元の長さが size(A,dim) であり、その他の次元の大きさがすべて 1 である配列が含まれます。

    たとえば、4 × 7 × 3 の配列 A の場合、この図は num2celldim 値が 12 および 3 の値に対応するセルを作成する方法を示します。

  • dimN 個の値を含むベクトルである場合には、Cnumel(A)/prod([size(A,dim(1)),...,size(A,vdim(N))]) 個のセルをもちます。各セルには、dim(i) 番目の次元の長さが size(A,dim(i)) であり、その他の大きさが 1 の次元である配列が含まれます。

    たとえば、4 x 7 x 3 の配列があれば dim に正の整数ベクトルを指定して異なる次元の cell 配列を作成できます。

データ型: cell

拡張機能

R2006a より前に導入