mat2cell

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

Синтаксис

C = mat2cell(A,dim1Dist,...,dimNDist)
C = mat2cell(A,rowDist)

Описание

пример

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 = 2x2 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 = 2x1 cell array
    {1x5 double}
    {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 th размерность A, задайте элементы соответствующего векторного dimKDist так, чтобы sum(dimKDist) равнялся размеру K th размерность.

Если K th размерность 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

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