exponenta event banner

mat2cell

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

Описание

пример

C = mat2cell(A,dim1Dist,...,dimNDist) делит массив A в меньшие массивы и возвращает их в массиве ячеек C. Векторы dim1Dist,...dimNDist укажите, как разделить строки, столбцы и (если применимо) более высокие размеры A. Меньшие массивы в C может иметь различные размеры. A может иметь любой тип данных.

пример

C = mat2cell(A,rowDist) делит массив A в nмассив ячеек -by-1 C, где n равно количеству элементов в rowDist.

Примеры

свернуть все

Создайте числовой массив 5 на 4.

A = reshape(1:20,5,4)'
A = 4×5

     1     2     3     4     5
     6     7     8     9    10
    11    12    13    14    15
    16    17    18    19    20

Разделиться A в два подрешетки 2 на 3 и два 2 на 2. Возвращает субчипы в массиве ячеек.

C = mat2cell(A,[2 2],[3 2])
C=2×2 cell array
    {2x3 double}    {2x2 double}
    {2x3 double}    {2x2 double}

Отображение подчисток в C с использованием celldisp функция.

celldisp(C)
 
C{1,1} =
 
     1     2     3
     6     7     8

 
 
C{2,1} =
 
    11    12    13
    16    17    18

 
 
C{1,2} =
 
     4     5
     9    10

 
 
C{2,2} =
 
    14    15
    19    20

 

Создайте массив.

A = reshape(1:20,5,4)'
A = 4×5

     1     2     3     4     5
     6     7     8     9    10
    11    12    13    14    15
    16    17    18    19    20

Разделить строки A таким образом, что массив ячеек содержит два подрешетки. С первого элемента rowDist является 1, первая ячейка C содержит первую строку A. Второй элемент rowDist является 3, так что следующая ячейка C содержит следующие три строки A. Сумма элементов rowDist равно количеству строк A.

rowDist = [1 3];
C = mat2cell(A,rowDist)
C=2×1 cell array
    {[1 2 3 4 5]}
    {3x5 double }

Отображение подчисток.

celldisp(C)
 
C{1} =
 
     1     2     3     4     5

 
 
C{2} =
 
     6     7     8     9    10
    11    12    13    14    15
    16    17    18    19    20

 

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

свернуть все

Входной массив.

Векторы, описывающие распределения элементов входного массива по каждой размерности, определяемые как числовые векторы.

Например, если A является массивом 60 на 50, тогда можно указать этот аргумент как [10 20 30],[25 25] разделиться A как показано на коде и рисунке. C является массивом ячеек, который содержит шесть субчипов, разделенных из A.

C = mat2cell(A,[10 20 30],[25 25])

Для K-й размер A, укажите элементы соответствующего вектора dimKDist чтобы sum(dimKDist) равен размеру K-е измерение.

Если K-й размер A имеет нулевой размер, затем укажите соответствующий вектор dimKDist как пустой массив, [], как показано в коде.

A = rand(3,0,4);
C = mat2cell(A,[1 2],[],[2 1 1]);

Вектор, описывающий распределение по строкам входного массива, заданного как числовой вектор. Если не указан способ разделения A вдоль любого другого измерения, mat2cell функция возвращает nмассив ячеек -by-1 C, где n равно количеству элементов в rowDist.

Каждый элемент rowDist указывает количество строк в подчищении, которое находится в соответствующей ячейке C. Сумма элементов rowDist должно равняться количеству строк A.

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