Table of Contents

Flatten

Matrix.Flatten($M$) takes an object $M$, which must be a matrix with matrix-valued entries, and returns the flattened version, which is a matrix with numbers as entries. This allows for working with block matrices, e.g. defining a matrix of the form \begin{equation} M= \left( \begin{matrix} A & B \\ C & D\\ \end{matrix} \right) \end{equation} where $A,B,C,D$ are all matrices.

If an entry of the input matrix $M$ is $0$ instead of a matrix, Quanty will interpret this as a zero-matrix of appropriate size, which makes creating sparse block-matrices especially easy in conjunction with Matrix.Zero(). A complete line or column of zeros will be deleted.

Example

Input

Example.Quanty
A = {{1,1},{1,1}}
B = {{2,2,2},{2,2,2}}
C = {{3,3},{3,3},{3,3},{3,3}}
D = {{4,4,4},{4,4,4},{4,4,4},{4,4,4}}
 
print("Matrix.Flatten({{A,B},{C,D}})" )
print( Matrix.Flatten({{A,B},{C,D}}) )
 
print("\n\n\n")
M = Matrix.Zero(3,{{"userdata",false}})
M[1][1] = A
M[1][2] = B
M[2][2] = D
M[3][3] = C
print( "Matrix.Flatten(M)" )
print( Matrix.Flatten(M) )

Result

Matrix.Flatten({{A,B},{C,D}})
{ { 1 , 1 , 2 , 2 , 2 } , 
  { 1 , 1 , 2 , 2 , 2 } , 
  { 3 , 3 , 4 , 4 , 4 } , 
  { 3 , 3 , 4 , 4 , 4 } , 
  { 3 , 3 , 4 , 4 , 4 } , 
  { 3 , 3 , 4 , 4 , 4 } }
 
 
 
 
Matrix.Flatten(M)
{ { 1 , 1 , 2 , 2 , 2 , 0 , 0 } , 
  { 1 , 1 , 2 , 2 , 2 , 0 , 0 } , 
  { 0 , 0 , 4 , 4 , 4 , 0 , 0 } , 
  { 0 , 0 , 4 , 4 , 4 , 0 , 0 } , 
  { 0 , 0 , 4 , 4 , 4 , 0 , 0 } , 
  { 0 , 0 , 4 , 4 , 4 , 0 , 0 } , 
  { 0 , 0 , 0 , 0 , 0 , 3 , 3 } , 
  { 0 , 0 , 0 , 0 , 0 , 3 , 3 } , 
  { 0 , 0 , 0 , 0 , 0 , 3 , 3 } , 
  { 0 , 0 , 0 , 0 , 0 , 3 , 3 } }

Table of contents