matrix
reshapes an array with the same number and order of components
Syntax
y = matrix(v, m, n) y = matrix(v, m1, m2, m3, ..) y = matrix(v, [sizes])
Arguments
 v
Any matricial container (regular matrix of any data type; cells array; structures array), of any number of dimensions (vector, matrix, hyperarray), with any sizes.
 n, m, m1, m2, ..
positive integers: new expected sizes after reshaping. One of them may be set to
1
. sizes
vector of positive integers: new expected sizes
 y
the reshaped array, with
y(i)==v(i)
andsize(y,"*")==size(v,"*")
.
Description
For an array or hyperarray v
with n
x
m
entries, y = matrix(v, n, m)
or
y = matrix(v, [n,m])
transforms v
into a
n
x m
matrix, by stacking columnwise
the entries of v
.
Similarly, for an array or hyperarray v
with m1
x
m2
x m3 ..
entries,
y = matrix(v, m1, m2, m3,..)
or
y = matrix(v, [m1 m2 m3..])
transforms v
into a hyperarray with m1
rows, m2
columns,
m3 ..
layers, ...etc.
In all cases, the linear order of components in y
is the same as in
v
: For any 1 <= i <= size(v,"*")
,
y(i)=v(i)
.
If one of the sizes m
or n
or m1
etc.. is equal to 1, its actual value is automatically set such that the total number
of components is unchanged.

Examples
With a regular matrix of decimal numbers:
a = [1 3 5 7 9 11; 2 4 6 8 10 12] matrix(a, 4, 3) matrix(a, [3 4]) matrix(a, 3, 1) // into an hypermatrix: matrix(a, 3, 2, 2)
With texts:
t = strsplit("a":"x",1:23)' matrix(t,[3,8])
> t = strsplit("a":"x",1:23)' t = !a b c d e f g h i j k l m n o p q r s t u v w x ! > matrix(t,[3,8]) ans = !a d g j m p s v ! !b e h k n q t w ! !c f i l o r u x !
With a cells hyperarray:
c = makecell([2,3,2], %t,%z, %i,"abc", list(%pi,"a"), int8(23),cos,sind,"àèìòù",corelib, 0.5, 1/%z^2) rc = matrix(c, 3, 4) rc(8)==c(8) rc{8}.getshell
c = (:,:,1) [1x1 boolean] [1x1 polynomial] [1x1 constant] [1x1 string ] [ list ] [1x1 int8 ] (:,:,2) [ 1 fptr ] [ 1 function] [1x1 string] [ library] [ 1x1 constant] [ r ] > rc = matrix(c, 3, 4) rc = [1x1 boolean ] [ list ] [ 1 fptr ] [1x1 constant] [1x1 string ] [1x1 constant] [ library ] [1x1 string ] [1x1 polynomial] [1x1 int8 ] [ 1 function] [ r ] > rc(8)==c(8) ans = T > rc{8}.getshell ans = cmd
With a structures array:
clear s s(3,6).r = %pi matrix(s,2,9)
> s(3,6).r = %pi s = 3x6 struct array with fields: r > matrix(s,2,9) ans = 2x9 struct array with fields: r
See also
 colon (:) — Ranging operator. Addresses all elements along an array dimension or of a list.
 resize_matrix — trim or/and extend (and cast) a matrix or hypermatrix
 ndims — number of dimensions of an array
 size — size of objects
 extraction — matrix and list entry extraction
 transposition — (') transpose operator, string delimiter
 brackets [..] — Concatenation. Recipients of an assignment. Results of a function
 matrices — Scilab objects, matrices in Scilab
 hypermatrices — a Scilab object, N dimensional matrix in Scilab
 makecell — Creates a cell array.
 struct — Builds a structure or an array of structures
 mlist — Scilab object, matrix oriented typed list definition
Report an issue  
<< flipdim  Matrix  shaping  permute >> 