Matrix Superclass: Array Matrices are 2-dimensional Arrays whose slots may only contain (at the moment 'real' ) numbers. Their shape is fully described by the number of rows and columns(cols). Each element can be adressed by 2 indecies (row,col), where row /col ranges between 0 and rows-1/cols-1. For a lesson on matrices, read your math books from school. Or visit this tutorial site: http://www.ucl.ac.uk/geolsci/edu/ugrads/geomaths/matfront.htm Or this reference if you like it the hard way: http://www.ee.ic.ac.uk/hp/staff/dmb/matrix/intro.html#Intro Matrix.sc uses an 'array of rows' notation. This is the same concept as found in Array.sc in the commented (// 2D array support) methods. As a subclass of Array, Matrix responds to far more methods than given in this helpfile. Be aware of strange results when using them. This is meant to support only the basic matrix manipulations. Most of this is not designed for realtime action. To slow, not optimized. Suggestions, bugs, improvements to sc.solar@studiobeige.de Class Methods *newClear(rows, cols) Create a new Matrix of shape (rows, cols) filled with zeros. Matrix.newClear(3,3).postln; *with(array) Create a new Matrix whose rows are filled with the given subarrays. Matrix.with([[1,2,3],[4,5,6],[7,8,9]]).postln; *withFlatArray( rows, cols, array) Create a new Matrix from a 1-dimensional array of shape (rows , cols). Matrix.withFlatArray(3,3,[1,2,3,4,5,6,7,8,9]).postln; *newIdentity(n) Create a new identity matrix of shape (n,n). Matrix.newIdentity(3).postln; *fill (rows, cols, function) fill the matrix by evaluating function. function is passed two arguments: row, col Instance Methods rows returns the number of rows cols returns the number of columns shape returns the number of rows and columns as array [rows, cols] postmln post the matrix as 2D representation. Matrix.withFlatArray(3,3,[1,2,3,4,5,6,7,8,9]).postln; Matrix.withFlatArray(3,3,[1,2,3,4,5,6,7,8,9]).postmln; doRow (row, function) evaluate function for each element of row; function is passed two arguments: item, col doCol (col, function) evaluate function for each element of col; function is passed two arguments: item, row doMatrix (function) evaluate function for each element ; function is passed three arguments: item, row,col; Changing Matrices: put (row, col, value) put a single element at (row, col) putRow (row, values) put a row of elements at (row) Matrix.newClear(3,3).putRow(0,[2,4,6]).postln putCol (col, values) put a column of elements at (col) Matrix.newClear(3,3).putCol(1,[2,4,6]).postln fillRow (row, function) fill a row by evaluating function for each element; function is passed two arguments: row, col. fillCol (col, function) fill a column by evaluating function for each element; function is passed two arguments: row, col. exchangeRow (rowA, rowB) exchange two rows exchangeCol (colA, colB) exchange two cols Return Arrays: at (row, col) or get(row, col) returns element at (row,col) getRow (row) returns an array from row getCol (col) returns an array from column getDiagonal () returns an array from the diagonal elements asArray returns an array of rows flat returns a one slot array of all elements Return Matrices: fromRow (row) returns a new matrix from row fromCol (col) returns a new matrix from column addRow (values) add a row (values) to the matrix and return. receiver is unchanged. addCol (values) add a column (values) to the matrix and return. receiver is unchanged. insertRow (col, values) insert a row (values) in matrix and return. receiver is unchanged. insertCol (row, values) insert a column (values) in matrix and return. receiver is unchanged. removeRow (row) returns a new matrix without row removeCol (col) returns a new matrix without column collect (function) returns a new matrix by evaluating function for each element. function is passed three arguments: item, row, col. sub (row, col) returns a submatrix that results from matrix by crossing out row and col flop returns the transpose of matrix adjoint returns the adjoint or adjugate of a square matrix inverse returns the inverse of a square matrix gram returns the gram matrix (the transpose of matrix multiplied with matrix) psydoInverse returns the psydoinverse of a matrix * matrix2 returns the result of matrix multiplication: matrix * matrix2 matrix.cols must equal matrix2.rows * aNumber returns multiplication with aNumber for each element + matrix2 returns (matrix + matrix2) matrix must have the same shape as matrix2 + aNumber returns summation with aNumber for each element - matrix2 returns (matrix - matrix2) matrix must have the same shape as matrix2 - aNumber returns subtraction with aNumber for each element Return characteristic values sum returns the sum of all elements sumRow (row) returns the sum of all elements of row sumCol (col) returns the sum of all elements of column grammian returns the grammian of a matrix (determinant of the gram matrix) Return characteristic values of square matrices: det returns the determinant cofactor (row, col) returns the cofactor to element (row, col) this is the determinant of the matrix.sub(row, col) mutiplied with (-1)**(row+col) trace returns the trace of matrix: (sum of the diagonal elements) norm returns the euclidean norm of matrix ( sqrt( tr [ A*A(T) ] ) ) testing isSquare returns true for (n x n) - matrices isSingular returns true if determiant is zero isRegular returns true if determiant is Non-zero isSymmetric returns true if matrix is symmetric isAntiSymmetric returns true if matrix is antisymmetric isPositive returns true if matrix is strictly positive isNonNegative returns true if matrix is positive / non negative (zeros allowed) isNormal returns true if matrix is normal isZero returns true for a zero matrix isIntegral returns true if matrix is integral An Integral matrix is one whose elements are all integers. isIdentity returns true if matrix is an identity matrix (the diagonal elements are all 1; the nondigonal elements are all zero) isDiagonal returns true if matrix is diagonal a(i,j)=0 unless i=j. isOrthogonal returns true if matrix is orthogonal (the matrix multiplied with its transpose is an identity matrix) isIdempotent returns true if matrix is idempotent (the squared matrix equals itself) == matrix2 returns true if matrix equals matrix2 unary operators: matrix.uop neg, bitNot, abs, ceil, floor, frac, sign, squared, cubed, sqrt, exp, reciprocal; returns new matrices. binary operators: use : matrix bop aNumber or : aNumber bop matrix /, div, %, **, min, max; returns new matrices.