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) = 

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


C(:,:,2) = 

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

Каждый 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 и ndimsA).

Элементы не должны быть в числовом порядке. Однако 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, затем каждая ячейка содержит массив чей dimth размерная длина является 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)размерность th имеет длину size(A,dim(i)) и чьи другие размерности являются одиночными элементами.

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

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

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

Смотрите также

| |

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