# Documentation

### This is machine translation

Translated by
Mouse over text to see original. Click the button below to return to the English verison of the page.

# mat2cell

Convert array to cell array with potentially different sized cells

## Syntax

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

## Description

`C = mat2cell(A,dim1Dist,...,dimNDist)` divides array `A` into smaller arrays within cell array `C`. Vectors `dim1Dist,...dimNDist` specify how to divide the rows, columns, and (when applicable) higher dimensions of `A`.

`C = mat2cell(A,rowDist)` divides array `A` into an `n`-by-1 cell array `C`, where `n == numel(rowDist)`.

## Input Arguments

 `A` Any type of array. `dim1Dist,...,dimNDist` Numeric vectors that describe how to divide each dimension of `A`. For example, this command `c = mat2cell(x, [10, 20, 30], [25, 25])` divides a 60-by-50 array into six arrays contained in a cell array. For the `k`th dimension, ```sum(dimkDist) == size(A, k)```. If the `k`th dimension of `A` is zero, set the corresponding `dimkDist` to the empty array, `[]`. For example, ```a = rand(3, 0, 4); c = mat2cell(a, [1, 2], [], [2, 1, 1]);``` `rowDist` Numeric vector that describes how to divide the rows of `A`. When you do not specify distributions for any other dimension, the `mat2cell` function creates an `n`-by-1 cell array `C`, where `n == numel(rowDist)`.

## Output Arguments

 `C` Cell array. The `k`th dimension of array `C` is given by ```size(C, k) == numel(dimkDist)```. The `k`th dimension of the `i`th cell of `C` is given by `size(C{i}, k) == dimkDist(i)`.

## Examples

Divide the 5-by-4 matrix `X` into 2-by-3 and 2-by-2 matrices contained in a cell array.

```X = reshape(1:20,5,4)' C = mat2cell(X, [2 2], [3 2]) celldisp(C)```

This code returns

```X = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 C = [2x3 double] [2x2 double] [2x3 double] [2x2 double] 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```

Divide `X` (created in the previous example) into a 2-by-1 cell array.

```C = mat2cell(X, [1 3]) celldisp(C)```

This code returns

```C = [1x5 double] [3x5 double] C{1} = 1 2 3 4 5 C{2} = 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20```