−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 M=(ABCD) 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 } }