reshape
Reshape symbolic array
Description
reshape(
lets you represent a
size value with the placeholder A
,...,[],...)[]
while calculating the magnitude of
that size value automatically. For example, if A
has size 2-by-6, then
reshape(A,4,[])
returns a 4-by-3 array.
Examples
Reshape Symbolic Row Vector into Column Vector
Reshape V
, which is a 1-by-4 row vector, into the
4-by-1 column vector Y
. Here, V
and
Y
must have the same number of elements.
Create the vector V
.
syms f(x) y V = [3 f(x) -4 y]
V = [ 3, f(x), -4, y]
Reshape V
into Y
.
Y = reshape(V,4,1)
Y = 3 f(x) -4 y
Alternatively, use Y = V.'
where .'
is the
nonconjugate transpose.
Reshape Symbolic Matrix
Reshape the 2-by-6 symbolic matrix M
into a 4-by-3
matrix.
M = sym([1 9 4 3 0 1; 3 9 5 1 9 2]) N = reshape(M,4,3)
M = [ 1, 9, 4, 3, 0, 1] [ 3, 9, 5, 1, 9, 2] N = [ 1, 4, 0] [ 3, 5, 9] [ 9, 3, 1] [ 9, 1, 2]
M
and N
must have the same number of elements.
reshape
reads M
column-wise to fill in the elements
of N
column-wise.
Alternatively, use a size vector to specify the dimensions of the reshaped matrix.
sz = [4 3]; N = reshape(M,sz)
N = [ 1, 4, 0] [ 3, 5, 9] [ 9, 3, 1] [ 9, 1, 2]
Automatically Set Dimension of Reshaped Matrix
When you replace a dimension with the placeholder
[]
, reshape
calculates the required magnitude of
that dimension to reshape the matrix.
Create the matrix M
.
M = sym([1 9 4 3 0 1; 3 9 5 1 9 2])
M = [ 1, 9, 4, 3, 0, 1] [ 3, 9, 5, 1, 9, 2]
Reshape M
into a matrix with three columns.
reshape(M,[],3)
ans = [ 1, 4, 0] [ 3, 5, 9] [ 9, 3, 1] [ 9, 1, 2]
reshape
calculates that a reshaped matrix of three columns needs four
rows.
Reshape Matrix Row-wise
Reshape a matrix row-wise by transposing the result.
Create matrix M
.
syms x M = sym([1 9 0 sin(x) 2 2; NaN x 5 1 4 7])
M = [ 1, 9, 0, sin(x), 2, 2] [ NaN, x, 5, 1, 4, 7]
Reshape M
row-wise by transposing the result.
reshape(M,4,3).'
ans = [ 1, NaN, 9, x] [ 0, 5, sin(x), 1] [ 2, 4, 2, 7]
Note that .'
returns the non-conjugate transpose while
'
returns the conjugate transpose.
Reshape 3-D Array into 2-D Matrix
Reshape the 3-by-3-by-2 array M
into a 9-by-2
matrix.
M
has 18 elements. Because a 9-by-2 matrix also has 18 elements,
M
can be reshaped into it. Construct M
.
syms x M = [sin(x) x 4; 3 2 9; 8 x x]; M(:,:,2) = M'
M(:,:,1) = [ sin(x), x, 4] [ 3, 2, 9] [ 8, x, x] M(:,:,2) = [ sin(conj(x)), 3, 8] [ conj(x), 2, conj(x)] [ 4, 9, conj(x)]
Reshape M
into a 9-by-2 matrix.
N = reshape(M,9,2)
N = [ sin(x), sin(conj(x))] [ 3, conj(x)] [ 8, 4] [ x, 3] [ 2, 2] [ x, 9] [ 4, 8] [ 9, conj(x)] [ x, conj(x)]
Use reshape to Break Up Arrays
Use reshape
instead of loops to break up arrays
for further computation. Use reshape
to break up the vector
V
to find the product of every three elements.
Create vector V
.
syms x V = [exp(x) 1 3 9 x 2 7 7 1 8 x^2 3 4 sin(x) x]
V = [ exp(x), 1, 3, 9, x, 2, 7, 7, 1, 8, x^2, 3, 4, sin(x), x]
Specify 3
for the number of rows. Use the placeholder
[]
for the number of columns. This lets reshape
automatically calculate the number of columns required for three rows.
M = prod( reshape(V,3,[]) )
M = [ 3*exp(x), 18*x, 49, 24*x^2, 4*x*sin(x)]
reshape
calculates that five columns are required for a matrix of
three rows. prod
then multiples the elements of each column to return
the result.
Input Arguments
Version History
Introduced before R2006a