num2cell

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

Синтаксис

C = num2cell(A)
C = num2cell(A,dim)

Описание

пример

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 = 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 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 = 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 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 = 1x3 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 = 4x1 cell array
    {1x3x2 double}
    {1x3x2 double}
    {1x3x2 double}
    {1x3x2 double}

Входные параметры

свернуть все

Введите, заданный как любой тип многомерного массива.

Типы данных: удвойтесь | единственный | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический | char | строка | struct | ячейка | категориальный | datetime | длительность | calendarDuration | function_handle

Размерность A, заданного как положительное целое число или вектор положительных целых чисел. dim должен быть между 1 и ndims (A).

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

Типы данных: удвойтесь | единственный | 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 которого th размерная длина является 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 как положительный целочисленный вектор, чтобы создать массивы ячеек различных размерностей.

Типы данных: ячейка

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

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

| |

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

Была ли эта тема полезной?