Title
mz_reshape() -- Remodels a matrix according both to specified rows and columns
Syntax
transmorphic matrix mz_reshape(x, m, n)
where
x: transmorphic matrix
m: real scalar containing the new row dimension
n: real scalar containing the new column dimension
Description
mz_reshape() returns a new matrix which is the matrix x remodeled to a matrix with m rows and n columns. mz_reshape() is similar to mata official built in functions [M-5] colshape() and [M-5] rowshape(). But it is more flexible in that the user can set the number of rows and columns he/she wants for the new matrix. That makes that mz_reshape() performs transformations where both [M-5] colshape() and [M-5] rowshape() returns errors. mz_reshape() forms matrices by row. mz_reshape() returns to the first components of x and gets components from there if there are less components in x to make the new matrix. The lingering components are left over if there are more components in x than in the new matrix.
Remarks
Examples:
: x 1 2 3 4 +---------------------+ 1 | 50 51 52 53 | 2 | 54 55 56 57 | 3 | 58 59 60 61 | 4 | 62 63 64 65 | +---------------------+
: mz_reshape(x, 2, 8) 1 2 3 4 5 6 7 8 +-----------------------------------------+ 1 | 50 51 52 53 54 55 56 57 | 2 | 58 59 60 61 62 63 64 65 | +-----------------------------------------+
: mz_reshape(x, 2, 6) 1 2 3 4 5 6 +-------------------------------+ 1 | 50 51 52 53 54 55 | 2 | 56 57 58 59 60 61 | +-------------------------------+
: mz_reshape(x, 8, 2) 1 2 +-----------+ 1 | 50 51 | 2 | 52 53 | 3 | 54 55 | 4 | 56 57 | 5 | 58 59 | 6 | 60 61 | 7 | 62 63 | 8 | 64 65 | +-----------+
: mz_reshape(x, 6, 2) 1 2 +-----------+ 1 | 50 51 | 2 | 52 53 | 3 | 54 55 | 4 | 56 57 | 5 | 58 59 | 6 | 60 61 | +-----------+ If the matrix x has only one element
: x 1 +------+ 1 | 50 | +------+
We have
: mz_reshape(x, 3, 5) 1 2 3 4 5 +--------------------------+ 1 | 50 50 50 50 50 | 2 | 50 50 50 50 50 | 3 | 50 50 50 50 50 | +--------------------------+
Case where we have a string matrix
: A 1 2 3 4 5 +-------------------------------+ 1 | a11 a12 a13 a14 a15 | 2 | a21 a22 a23 a24 a25 | 3 | a31 a32 a33 a34 a35 | +-------------------------------+
: mz_reshape(A, 2, 6) 1 2 3 4 5 6 +-------------------------------------+ 1 | a11 a12 a13 a14 a15 a21 | 2 | a22 a23 a24 a25 a31 a32 | +-------------------------------------+
: mz_reshape(A, 4, 7) 1 2 3 4 5 6 7 +-------------------------------------------+ 1 | a11 a12 a13 a14 a15 a21 a22 | 2 | a23 a24 a25 a31 a32 a33 a34 | 3 | a35 a11 a12 a13 a14 a15 a21 | 4 | a22 a23 a24 a25 a31 a32 a33 | +-------------------------------------------+
Conformability
mz_reshape(x, m, n) x: r x c m: 1 x 1 n: 1 x 1 result: m x n.
Diagnostics
None
Source code
mz_reshape.mata
Author
Diallo Ibrahima Amadou, zavren@gmail.com
Also see
Online: help for [M-5] colshape(), [M-5] rowshape(), ltimbimata