reshape - Reshape array by rearranging existing elements - MATLAB (original) (raw)
Reshape array by rearranging existing elements
Syntax
Description
[B](#bud6j0x-1-B) = reshape([A](#bud6j0x-1-A),[sz](#bud6j0x-1-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)
.
[B](#bud6j0x-1-B) = reshape([A](#bud6j0x-1-A),[sz1,...,szN](#bud6j0x-1-sz1szN))
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
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 = 4×4
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
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 2-by-2-by-3 array of random values into a 6-by-2 matrix.
rng default A = rand(2,2,3)
A = A(:,:,1) =
0.8147 0.1270
0.9058 0.9134
A(:,:,2) =
0.6324 0.2785
0.0975 0.5469
A(:,:,3) =
0.9575 0.1576
0.9649 0.9706
B = 6×2
0.8147 0.2785
0.9058 0.5469
0.1270 0.9575
0.9134 0.9649
0.6324 0.1576
0.0975 0.9706
Input Arguments
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
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
Tips
- The
reshape
function rearranges existing elements in the input data. To add or remove elements, use the resize function.
Extended Capabilities
This function supports tall arrays with the limitations:
- Reshaping the tall dimension (dimension one) is not supported. The first dimension input should always be empty, such as
reshape(X,[],M,N,...)
.
For more information, see Tall Arrays for Out-of-Memory Data.
Usage notes and limitations:
- The size arguments
sz
andsz1,...,szN
must be fixed size at code generation time. - If
A
is an empty array at run time, the longest dimension of the reshaped output array cannot be longer than the longest dimension of the input array. To increase the length of the longest dimension of an empty array at run time, all dimensions ofA
must be constant at code generation time. - For sparse matrices, the
reshape
function does not support trailing ones as inputs after the first two dimensions.
Usage notes and limitations:
- If the input is a compile-time empty cell array, then the size arguments must be constants.
- Size arguments must have a fixed size.
- For sparse matrices, the
reshape
function does not support trailing ones as inputs after the first two dimensions.
Version History
Introduced before R2006a