reshape

Reshape array

Syntax

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

expand all

Reshape Vector into Matrix

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

A = 1:10;
B = reshape(A,[5,2])
B =

     1     6
     2     7
     3     8
     4     9
     5    10

Reshape Matrix to Have Specified Number of Columns

Reshape a 6-by-6 magic square matrix into a matrix that has only 3 columns. Specify [] for the first dimension size to let reshape automatically calculate the appropriate number of rows.

A = magic(6);
B = reshape(A,[],3)
B =

    35     6    19
     3     7    23
    31     2    27
     8    33    10
    30    34    14
     4    29    18
     1    26    24
    32    21    25
     9    22    20
    28    17    15
     5    12    16
    36    13    11

The result is a 12-by-3 matrix, which maintains the same number of elements (36) as the original 6-by-6 matrix. The elements in B also maintain their columnwise order from A.

Reshape Multidimensional Array into Matrix

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 =

     0     0
     0     0
     0     0
     0     0
     0     0
     0     0
     0     0
     0     0
     0     0

Input Arguments

expand all

A — Input arrayvector | matrix | multidimensional array

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

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

Complex Number Support: Yes

sz — Output sizerow vector of integers

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])

sz1,...,szN — Size of each dimensiontwo or more integers | [] (optional)

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

expand all

B — Reshaped arrayvector | matrix | multidimensional array | cell array

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.

Was this topic helpful?