# reshape

## Syntax

``B = reshape(A,sz)``
``B = reshape(A,sz1,...,szN)``

## Description

example

````B = reshape(A,sz)` reshapes `A` using the size vector, `sz`, to define `size(B)`. For example, `reshape(A,[2,3])` reshapes `A` into a 2-by-3 matrix. `sz` must contain at least 2 elements, and `prod(sz)` must be the same as `numel(A)`.```

example

````B = reshape(A,sz1,...,szN)` reshapes `A` into a `sz1`-by-`...`-by-`szN` array where `sz1,...,szN` indicates the size of each dimension. You can specify a single dimension size of `[]` to have the dimension size automatically calculated, such that the number of elements in `B` matches the number of elements in `A`. For example, if `A` is a 10-by-10 matrix, then `reshape(A,2,2,[])` reshapes the 100 elements of `A` into a 2-by-2-by-25 array.```

## Examples

collapse all

Reshape a 1-by-10 vector into a 5-by-2 matrix.

```A = 1:10; B = reshape(A,[5,2])```
```B = 5×2 1 6 2 7 3 8 4 9 5 10 ```

Reshape a 4-by-4 square matrix into a matrix that has 2 columns. Specify `[]` for the first dimension to let `reshape` automatically calculate the appropriate number of rows.

`A = magic(4)`
```A = 4×4 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 ```
`B = reshape(A,[],2)`
```B = 8×2 16 3 5 10 9 6 4 15 2 13 11 8 7 12 14 1 ```

The result is an 8-by-2 matrix, which maintains the same number of elements as the original matrix. The elements in `B` also maintain their columnwise order from `A`.

Reshape a 3-by-2-by-3 array of zeros into a 9-by-2 matrix.

```A = zeros(3,2,3); B = reshape(A,9,2)```
```B = 9×2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ```

## Input Arguments

collapse all

Input array, specified as a vector, matrix, or multidimensional array.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `logical` | `char` | `string` | `cell` | `struct` | `datetime` | `duration` | `calendarDuration`
Complex Number Support: Yes

Output size, specified as a row vector of integers. Each element of `sz` indicates the size of the corresponding dimension in `B`. You must specify `sz` so that the number of elements in `A` and `B` are the same. That is, `prod(sz)` must be the same as `numel(A)`.

Beyond the second dimension, the output, `B`, does not reflect trailing dimensions with a size of `1`. For example, `reshape(A,[3,2,1,1])` produces a 3-by-2 matrix.

Example: `reshape(A,[3,2])`

Example: `reshape(A,[6,4,10])`

Example: `reshape(A,[5,5,5,5])`

Size of each dimension, specified as two or more integers with at most one `[]` (optional). You must specify at least 2 dimension sizes, and at most one dimension size can be specified as `[]`, which automatically calculates the size of that dimension to ensure that `numel(B)` matches `numel(A)`. When you use `[]` to automatically calculate a dimension size, the dimensions that you do explicitly specify must divide evenly into the number of elements in the input matrix, `numel(A)`.

Beyond the second dimension, the output, `B`, does not reflect trailing dimensions with a size of `1`. For example, `reshape(A,3,2,1,1)` produces a 3-by-2 matrix.

Example: `reshape(A,3,2)`

Example: `reshape(A,6,[],10)`

Example: `reshape(A,2,5,3,[])`

Example: `reshape(A,5,5,5,5)`

## Output Arguments

collapse all

Reshaped array, returned as a vector, matrix, multidimensional array, or cell array. The data type and number of elements in `B` are the same as the data type and number of elements in `A`. The elements in `B` preserve their columnwise ordering from `A`.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `logical` | `char` | `string` | `cell` | `datetime` | `duration` | `calendarDuration`