exponenta event banner

num2cell

Преобразование массива в массив ячеек с последовательным размером ячеек

Описание

пример

C = num2cell(A) преобразует массив A в массив ячеек C путем размещения каждого элемента A в отдельную ячейку в C.

num2cell функция преобразует массив, который имеет любой тип данных - даже нечисловой тип.

пример

C = num2cell(A,dim) разделяет содержимое A в отдельные ячейки C, где dim указывает, какие размеры A для включения в каждую ячейку. dim может быть скаляром или вектором размеров. Например, если A имеет 2 строки и 3 столбца, затем:

  • num2cell(A,1) создает массив ячеек 1 на 3 C, где каждая ячейка содержит столбец 2 на 1 A.

  • num2cell(A,2) создает массив ячеек 2 на 1 C, где каждая ячейка содержит строку 1 на 3 A.

  • num2cell(A,[1 2]) создает массив ячеек 1 на 1 C, где ячейка содержит весь массив A.

Примеры

свернуть все

Поместите все элементы числового массива в отдельные ячейки.

a = magic(3)
a = 3×3

     8     1     6
     3     5     7
     4     9     2

c = num2cell(a)
c=3×3 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
    {'f'}    {'o'}    {'u'}    {'r'}
    {'f'}    {'i'}    {'v'}    {'e'}
    {'n'}    {'i'}    {'n'}    {'e'}

Создайте числовой массив 4 на 3 на 2, а затем создайте массив ячеек 1 на 3 на 2 из векторов столбцов 4 на 1.

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

Создайте массив ячеек 4 на 1 на 2 из числовых массивов 1 на 3.

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

    {[ 1 5 9]}
    {[2 6 10]}
    {[3 7 11]}
    {[4 8 12]}


C(:,:,2) = 

    {[ 10 50 90]}
    {[20 60 100]}
    {[30 70 110]}
    {[40 80 120]}

Каждый вектор строки 1 на 3 содержит элементы вдоль второго размера A:

C{1}
ans = 1×3

     1     5     9

Наконец, создайте множество клетки числовых множеств 4 на 3 1 на 1 на 2.

C = num2cell(A,3)
C=4×3 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 на 1 на 2 содержит элементы от вдоль третьего измерения A:

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

     1


ans(:,:,2) =

    10

Создание массива ячеек путем объединения элементов в числовые массивы по нескольким размерам.

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=1×3 cell array
    {4x1x2 double}    {4x1x2 double}    {4x1x2 double}

Каждая матрица 4 на 1 на 2 содержит элементы по первому и третьему измерениям A:

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

     1
     2
     3
     4


ans(:,:,2) =

    10
    20
    30
    40

c = num2cell(A,[2 3])
c=4×1 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).

Элементы не обязательно должны быть в числовом порядке. Однако num2cell изменяет размеры массивов в каждой ячейке C для соответствия порядку указанных размеров.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Выходные аргументы

свернуть все

Результирующий массив, возвращаемый как массив ячеек. Размер C зависит от размера A и значения dim.

  • Если dim не указан, то C имеет тот же размер, что и A.

  • Если dim является скаляром, то C содержит numel(A)/size(A,dim) клетки. Если dim равно 1 или 2, тогда каждая ячейка содержит столбец или вектор строки соответственно. Если dim > 2, то каждая ячейка содержит массив, dimДлина в-го размера size(A,dim), и чьи другие измерения все одиночные.

    Например, если задан массив 4 на 7 на 3, A, на этом рисунке показано, как num2cell создает ячейки, соответствующие dim значения 1, 2, и 3.

  • Если dim является вектором, содержащим N значения, затем C имеет numel(A)/prod([size(A,dim(1)),...,size(A,vdim(N))]) клетки. Каждая ячейка содержит массив, dim(i)-й размер имеет длину size(A,dim(i)) и чьи другие размеры являются одиночными.

    Например, для массива 4 на 7 на 3 можно указать dim как положительный целочисленный вектор для создания массивов ячеек различных размеров.

Типы данных: cell

Расширенные возможности

См. также

| |

Представлен до R2006a