MatrixManipulation(R, Row, Col, M)

mama.spad line 1 [edit on github]

Some functions for manipulating (dense) matrices. Supported are various kinds of slicing, splitting and stacking of matrices. The functions resemble operations often used in numerical linear algebra algorithms.

bandMatrix : (M, List(Integer)) -> M if R has AbelianMonoid

bandMatrix returns multiple diagonals out of a matrix. The diagonals are put into a matrix of same shape as the original one. Positive integer arguments select upper off-diagonals, negative ones lower off-diagonals.

bandMatrix : (M, Segment(Integer)) -> M if R has AbelianMonoid

bandMatrix returns multiple diagonals out of a matrix. The diagonals are put into a matrix of same shape as the original one. Positive integer arguments select upper off-diagonals, negative ones lower off-diagonals.

blockSplit : (M, List(NonNegativeInteger), PositiveInteger) -> List(List(M))

blockSplit splits a matrix into multiple submatrices row and column wise, dividing a matrix into blocks.

blockSplit : (M, PositiveInteger, List(NonNegativeInteger)) -> List(List(M))

blockSplit splits a matrix into multiple submatrices row and column wise, dividing a matrix into blocks.

columnMatrix : (M, Integer) -> M

columnMatrix returns a single column out of a matrix. The column is put into a one by N matrix.

columns : (M, List(Integer)) -> M

columns returns several columns out of a matrix. The columns are stacked into a matrix.

columns : (M, Segment(Integer)) -> M

columns returns several columns out of a matrix. The columns are stacked into a matrix.

diagonalMatrix : M -> M if R has AbelianMonoid

diagonalMatrix returns the main diagonal out of a matrix. The diagonal is put into a matrix of same shape as the original one.

diagonalMatrix : (M, Integer) -> M if R has AbelianMonoid

diagonalMatrix returns a diagonal out of a matrix. The diagonal is put into a matrix of same shape as the original one. Positive integer arguments select upper off-diagonals, negative ones lower off-diagonals.

element : (M, Integer, Integer) -> M

element returns a single element out of a matrix. The element is put into a one by one matrix.

rowMatrix : (M, Integer) -> M

rowMatrix returns a single row out of a matrix. The row is put into a one by N matrix.

rows : (M, List(Integer)) -> M

rows returns several rows out of a matrix. The rows are stacked into a matrix.

rows : (M, Segment(Integer)) -> M

rows returns several rows out of a matrix. The rows are stacked into a matrix.

subMatrix : (M, List(Integer), List(Integer)) -> M

subMatrix returns several elements out of a matrix. The elements are stacked into a submatrix.

subMatrix : (M, Segment(Integer), Segment(Integer)) -> M

subMatrix returns several elements out of a matrix. The elements are stacked into a submatrix.