Matrix Math

DADiSP supports operations on both real and complex matrices. All calculations are performed with double precision floating point arithmetic.


The *^ operator or the MMULT function perform matrix multiplication. The MMULT function has the following format:


MMULT(matrix1, matrix2)




matrix1 is a matrix with dimension m1 x n1.

matrix2 is a matrix with dimension m2 x n2.


The number of columns in matrix1 (n1) must equal the number of rows in matrix2 (m2). the resultant matrix will have dimensions of (m1 x n2).


A *^ x is equivalent to mmult(A, x).


The \^ operator or the MDIV function will solve a matrix system. If A, b, and x are matrices, such that A *^ x = b, then A \^ b returns the matrix x.


A \^ b is equivalent to mdiv(A, b).


For A \^ b, where A is square, the system is solved using LU decomposition. This is usually numerically more stable than directly calculating the inverse matrix, i.e.


x = inv(A) *^ b.


If matrix A is not square, the system is considered a least squares problem and is solved by QR decomposition. The resulting matrix is the best solution in the least squares sense.