# Documentation

### This is machine translation

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

To view all translated materals including this page, select Japan from the country navigator on the bottom of this 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```