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

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

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

См. также

| |

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