trait Matrix[T] extends Error
The Matrix
trait specifies the operations to be defined by three concrete
implementing classes: MatrixN
, SparseMatrixN
and SymTriMatrix
.
- Alphabetic
- By Inheritance
- Matrix
- Error
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def *(x: T): Matrix[T]
Multiply this matrix by scalar 'x'.
Multiply this matrix by scalar 'x'.
- x
the scalar to multiply by
- abstract def *(u: VectorN[T]): VectorN[T]
Multiply this matrix by vector 'u'.
Multiply this matrix by vector 'u'.
- u
the vector to multiply by
- abstract def **(u: VectorN[T]): Matrix[T]
Multiply this matrix by vector 'u' to produce another matrix 'a_ij * u_j'.
Multiply this matrix by vector 'u' to produce another matrix 'a_ij * u_j'.
- u
the vector to multiply by
- abstract def **=(u: VectorN[T]): Matrix[T]
Multiply in-place this matrix by vector 'u' to produce another matrix 'a_ij * u_j'.
Multiply in-place this matrix by vector 'u' to produce another matrix 'a_ij * u_j'.
- u
the vector to multiply by
- abstract def *=(x: T): Matrix[T]
Multiply in-place this matrix by scalar 'x'.
Multiply in-place this matrix by scalar 'x'.
- x
the scalar to multiply by
- abstract def +(x: T): Matrix[T]
Add this matrix and scalar 'x'.
Add this matrix and scalar 'x'.
- x
the scalar to add
- abstract def ++(u: VectorN[T]): Matrix[T]
Concatenate this matrix and vector 'u'.
Concatenate this matrix and vector 'u'.
- u
the vector to be concatenated as the new last row in matrix
- abstract def +=(x: T): Matrix[T]
Add in-place this matrix and scalar 'x'.
Add in-place this matrix and scalar 'x'.
- x
the scalar to add
- abstract def -(x: T): Matrix[T]
From this matrix subtract scalar 'x'.
From this matrix subtract scalar 'x'.
- x
the scalar to subtract
- abstract def -=(x: T): Matrix[T]
From this matrix subtract in-place scalar 'x'.
From this matrix subtract in-place scalar 'x'.
- x
the scalar to subtract
- abstract def /(x: T)(implicit fr: Fractional[T]): Matrix[T]
Divide this matrix by scalar 'x'.
Divide this matrix by scalar 'x'.
- x
the scalar to divide by
- abstract def /=(x: T)(implicit fr: Fractional[T]): Matrix[T]
Divide in-place this matrix by scalar 'x'.
Divide in-place this matrix by scalar 'x'.
- x
the scalar to divide by
- abstract def apply(i: Int, jr: Range): VectorN[T]
Get a slice this matrix row-wise at index 'i' and column-wise on range 'jr'.
Get a slice this matrix row-wise at index 'i' and column-wise on range 'jr'. Ex: u = a(2, 3..5)
- i
the row index
- jr
the column range
- abstract def apply(ir: Range, j: Int): VectorN[T]
Get a slice this matrix row-wise on range 'ir' and column-wise at index 'j'.
Get a slice this matrix row-wise on range 'ir' and column-wise at index 'j'. Ex: u = a(2..4, 3)
- ir
the row range
- j
the column index
- abstract def apply(ir: Range, jr: Range): Matrix[T]
Get a slice this matrix row-wise on range 'ir' and column-wise on range 'jr'.
Get a slice this matrix row-wise on range 'ir' and column-wise on range 'jr'. Ex: b = a(2..4, 3..5)
- ir
the row range
- jr
the column range
- abstract def apply(i: Int): VectorN[T]
Get this matrix's vector at the 'i'th index position ('i'th row).
Get this matrix's vector at the 'i'th index position ('i'th row).
- i
the row index
- abstract def apply(i: Int, j: Int): T
Get this matrix's element at the 'i,j'-th index position.
Get this matrix's element at the 'i,j'-th index position.
- i
the row index
- j
the column index
- abstract def clean(thres: T, relative: Boolean = true)(implicit fr: Fractional[T]): Matrix[T]
Clean values in matrix at or below the threshold by setting them to zero.
Clean values in matrix at or below the threshold by setting them to zero. Iterative algorithms give approximate values and if very close to zero, may throw off other calculations, e.g., in computing eigenvectors.
- thres
the cutoff threshold (a small value)
- relative
whether to use relative or absolute cutoff
- abstract def col(col: Int, from: Int = 0): VectorN[T]
Get column 'col' from the matrix, returning it as a vector.
Get column 'col' from the matrix, returning it as a vector.
- col
the column to extract from the matrix
- from
the position to start extracting from
- abstract def det: T
Compute the determinant of this matrix.
- abstract def diag(p: Int, q: Int): Matrix[T]
Form a matrix '[Ip, this, Iq]' where 'Ir' is a 'r-by-r' identity matrix, by positioning the three matrices 'Ip', this and 'Iq' along the diagonal.
Form a matrix '[Ip, this, Iq]' where 'Ir' is a 'r-by-r' identity matrix, by positioning the three matrices 'Ip', this and 'Iq' along the diagonal.
- p
the size of identity matrix Ip
- q
the size of identity matrix Iq
- abstract val dim1: Int
Matrix dimension 1 (# rows)
- abstract val dim2: Int
Matrix dimension 2 (# columns)
- abstract def getDiag(k: Int = 0): VectorN[T]
Get the 'k'th diagonal of this matrix.
Get the 'k'th diagonal of this matrix. Assumes 'dim2 >= dim1'.
- k
how far above the main diagonal, e.g., (-1, 0, 1) for (sub, main, super)
- abstract def inverse(implicit fr: Fractional[T]): Matrix[T]
Invert this matrix (requires a 'squareMatrix') using partial pivoting.
- abstract def inverse_ip(implicit fr: Fractional[T]): Matrix[T]
Invert in-place this matrix (requires a 'squareMatrix') using partial pivoting.
- abstract def inverse_npp(implicit fr: Fractional[T]): Matrix[T]
Invert this matrix (requires a 'squareMatrix') not using partial pivoting.
- abstract def isNonnegative: Boolean
Check whether this matrix is nonnegative (has no negative elements).
- abstract def isRectangular: Boolean
Check whether this matrix is rectangular (all rows have the same number of columns).
- abstract def lud(implicit fr: Fractional[T]): (Matrix[T], Matrix[T])
Decompose this matrix into the product of lower and upper triangular matrices '(l, u)' using the 'LU' Decomposition algorithm.
Decompose this matrix into the product of lower and upper triangular matrices '(l, u)' using the 'LU' Decomposition algorithm. This version uses partial pivoting.
- abstract def lud_ip(implicit fr: Fractional[T]): (Matrix[T], Matrix[T])
Decompose in-place this matrix into the product of lower and upper triangular matrices '(l, u)' using the 'LU' Decomposition algorithm.
Decompose in-place this matrix into the product of lower and upper triangular matrices '(l, u)' using the 'LU' Decomposition algorithm. This version uses partial pivoting.
- abstract def mag: T
Find the magnitude of this matrix, the element value farthest from zero.
- abstract def max(e: Int = dim1): T
Find the maximum element in this matrix.
Find the maximum element in this matrix.
- e
the ending row index (exclusive) for the search
- abstract def min(e: Int = dim1): T
Find the minimum element in this matrix.
Find the minimum element in this matrix.
- e
the ending row index (exclusive) for the search
- abstract def norm1: T
Compute the 1-norm of this matrix, i.e., the maximum 1-norm of the column vectors.
Compute the 1-norm of this matrix, i.e., the maximum 1-norm of the column vectors. This is useful for comparing matrices '(a - b).norm1'.
- abstract def nullspace(implicit fr: Fractional[T]): VectorN[T]
Compute the (right) nullspace of this 'm-by-n' matrix (requires 'n = m + 1') by performing Gauss-Jordan reduction and extracting the negation of the last column augmented by 1.
Compute the (right) nullspace of this 'm-by-n' matrix (requires 'n = m + 1') by performing Gauss-Jordan reduction and extracting the negation of the last column augmented by 1. The nullspace of matrix 'a' is "this vector 'v' times any scalar 's'", i.e., 'a*(v*s) = 0.' The left nullspace of matrix 'a' is the same as the right nullspace of 'a.t' ('a' transpose).
- abstract def nullspace_ip(implicit fr: Fractional[T]): VectorN[T]
Compute the (right) nullspace in-place of this 'm-by-n' matrix (requires 'n = m + 1') by performing Gauss-Jordan reduction and extracting the negation of the last column augmented by 1.
Compute the (right) nullspace in-place of this 'm-by-n' matrix (requires 'n = m + 1') by performing Gauss-Jordan reduction and extracting the negation of the last column augmented by 1. The nullspace of matrix 'a' is "this vector 'v' times any scalar 's'", i.e., 'a*(v*s) = 0'. The left nullspace of matrix 'a' is the same as the right nullspace of 'a.t' ('a' transpose).
- abstract def reduce(implicit fr: Fractional[T]): Matrix[T]
Use Gauss-Jordan reduction on this matrix to make the left part embed an identity matrix.
Use Gauss-Jordan reduction on this matrix to make the left part embed an identity matrix. A constraint on this 'm-by-n' matrix is that 'n >= m'.
- abstract def reduce_ip(implicit fr: Fractional[T]): Matrix[T]
Use Gauss-Jordan reduction in-place on this matrix to make the left part embed an identity matrix.
Use Gauss-Jordan reduction in-place on this matrix to make the left part embed an identity matrix. A constraint on this 'm-by-n' matrix is that 'n >= m'.
- abstract def selectCols(colIndex: Array[Int]): Matrix[T]
Select columns from this matrix according the given index.
Select columns from this matrix according the given index. Ex: Can be used to divide a matrix into a basis and a non-basis.
- colIndex
the column index positions (e.g., (0, 2, 5))
- abstract def selectRows(rowIndex: Array[Int]): Matrix[T]
Select rows from this matrix according the given index.
Select rows from this matrix according the given index.
- rowIndex
the row index positions (e.g., (0, 2, 5))
- abstract def set(i: Int, u: VectorN[T], j: Int = 0): Unit
Set this matrix's 'i'th row starting a column 'j' to the vector 'u'.
Set this matrix's 'i'th row starting a column 'j' to the vector 'u'.
- i
the row index
- u
the vector value to assign
- j
the starting column index
- abstract def set(u: Array[Array[T]]): Unit
Set the values in this matrix as copies of the values in 2D array 'u'.
Set the values in this matrix as copies of the values in 2D array 'u'.
- u
the 2D array of values to assign
- abstract def set(x: T): Unit
Set all the elements in this matrix to the scalar 'x'.
Set all the elements in this matrix to the scalar 'x'.
- x
the scalar value to assign
- abstract def setCol(col: Int, u: VectorN[T]): Unit
Set column 'col' of the matrix to a vector.
Set column 'col' of the matrix to a vector.
- col
the column to set
- u
the vector to assign to the column
- abstract def setDiag(x: T): Unit
Set the main diagonal of this matrix to the scalar 'x'.
Set the main diagonal of this matrix to the scalar 'x'. Assumes 'dim2 >= dim1'.
- abstract def setDiag(u: VectorN[T], k: Int = 0): Unit
Set the 'k'th diagonal of this matrix to the vector 'u'.
Set the 'k'th diagonal of this matrix to the vector 'u'. Assumes 'dim2 >= dim1'.
- u
the vector to set the diagonal to
- k
how far above the main diagonal, e.g., (-1, 0, 1) for (sub, main, super)
- abstract def slice(r_from: Int, r_end: Int, c_from: Int, c_end: Int): Matrix[T]
Slice this matrix row-wise 'r_from' to 'r_end' and column-wise 'c_from' to 'c_end'.
Slice this matrix row-wise 'r_from' to 'r_end' and column-wise 'c_from' to 'c_end'.
- r_from
the start of the row slice
- r_end
the end of the row slice
- c_from
the start of the column slice
- c_end
the end of the column slice
- abstract def slice(from: Int, end: Int): Matrix[T]
Slice this matrix row-wise 'from' to 'end'.
Slice this matrix row-wise 'from' to 'end'.
- from
the start of the slice
- end
the end of the slice
- abstract def sliceExclude(row: Int, col: Int): Matrix[T]
Slice this matrix excluding the given row and column.
Slice this matrix excluding the given row and column.
- row
the row to exclude
- col
the column to exclude
- abstract def solve(b: VectorN[T])(implicit fr: Fractional[T]): VectorN[T]
Solve for 'x' in the equation 'a*x = b' where 'a' is this matrix (see 'lud' above).
Solve for 'x' in the equation 'a*x = b' where 'a' is this matrix (see 'lud' above).
- b
the constant vector.
- abstract def solve(lu: (Matrix[T], Matrix[T]), b: VectorN[T])(implicit fr: Fractional[T]): VectorN[T]
Solve for 'x' in the equation 'l*u*x = b' (see 'lud' above).
Solve for 'x' in the equation 'l*u*x = b' (see 'lud' above).
- lu
the lower and upper triangular matrices
- b
the constant vector
- abstract def solve(l: Matrix[T], u: Matrix[T], b: VectorN[T])(implicit fr: Fractional[T]): VectorN[T]
Solve for 'x' in the equation 'l*u*x = b' (see 'lud' above).
Solve for 'x' in the equation 'l*u*x = b' (see 'lud' above).
- l
the lower triangular matrix
- u
the upper triangular matrix
- b
the constant vector
- abstract def sum: T
Compute the sum of this matrix, i.e., the sum of its elements.
- abstract def sumAbs: T
Compute the 'abs' sum of this matrix, i.e., the sum of the absolute value of its elements.
Compute the 'abs' sum of this matrix, i.e., the sum of the absolute value of its elements. This is useful for comparing matrices '(a - b).sumAbs'.
- abstract def sumLower: T
Compute the sum of the lower triangular region of this matrix.
- abstract def t: Matrix[T]
Transpose this matrix (rows => columns).
- abstract def trace: T
Compute the trace of this matrix, i.e., the sum of the elements on the main diagonal.
Compute the trace of this matrix, i.e., the sum of the elements on the main diagonal. Should also equal the sum of the eigenvalues.
- See also
Eigen.scala
- abstract def update(i: Int, jr: Range, u: VectorN[T]): Unit
Set a slice this matrix row-wise at index 'i' and column-wise on range 'jr'.
Set a slice this matrix row-wise at index 'i' and column-wise on range 'jr'. Ex: a(2, 3..5) = u
- i
the row index
- jr
the column range
- u
the vector to assign
- abstract def update(ir: Range, j: Int, u: VectorN[T]): Unit
Set a slice this matrix row-wise on range 'ir' and column-wise at index 'j'.
Set a slice this matrix row-wise on range 'ir' and column-wise at index 'j'. Ex: a(2..4, 3) = u
- ir
the row range
- j
the column index
- u
the vector to assign
- abstract def update(i: Int, u: VectorN[T]): Unit
Set this matrix's row at the 'i'th index position to the vector 'u'.
Set this matrix's row at the 'i'th index position to the vector 'u'.
- i
the row index
- u
the vector value to assign
- abstract def update(i: Int, j: Int, x: T): Unit
Set this matrix's element at the 'i,j'-th index position to the scalar 'x'.
Set this matrix's element at the 'i,j'-th index position to the scalar 'x'.
- i
the row index
- j
the column index
- x
the scalar value to assign
- abstract def ~^(p: Int): Matrix[T]
Raise this matrix to the 'p'th power (for some integer 'p >= 2)'.
Raise this matrix to the 'p'th power (for some integer 'p >= 2)'. Caveat: should be replace by a divide and conquer algorithm.
- p
the power to raise this matrix to
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def flaw(method: String, message: String): Unit
Show the flaw by printing the error message.
Show the flaw by printing the error message.
- method
the method where the error occurred
- message
the error message
- Definition Classes
- Error
- def foreach[U](f: (Array[T]) => U): Unit
Iterate over the matrix row by row.
Iterate over the matrix row by row.
- f
the function to apply
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def isSquare: Boolean
Check whether this matrix is square (same row and column dimensions).
- def isSymmetric: Boolean
Check whether this matrix is symmetric.
- def leDimensions(b: Matrix[T]): Boolean
Check whether this matrix dimensions are less than or equal to 'le' those of the other Matrix.
Check whether this matrix dimensions are less than or equal to 'le' those of the other Matrix.
- b
the other matrix
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- val range1: Range
Range for the storage array on dimension 1 (rows)
Range for the storage array on dimension 1 (rows)
- Attributes
- protected
- val range2: Range
Range for the storage array on dimension 2 (columns)
Range for the storage array on dimension 2 (columns)
- Attributes
- protected
- def rank(implicit fr: Fractional[T]): Int
Determine the rank of this 'm-by-n' matrix by taking the upper triangular matrix from the 'LU' Decomposition and counting the number of non-zero diagonal elements.
Determine the rank of this 'm-by-n' matrix by taking the upper triangular matrix from the 'LU' Decomposition and counting the number of non-zero diagonal elements. FIX: should implement in implementing classes.
- def sameCrossDimensions(b: Matrix[T]): Boolean
Check whether this matrix and the other matrix have the same cross dimensions.
Check whether this matrix and the other matrix have the same cross dimensions.
- b
the other matrix
- def sameDimensions(b: Matrix[T]): Boolean
Check whether this matrix and the other Matrix have the same dimensions.
Check whether this matrix and the other Matrix have the same dimensions.
- b
the other matrix
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated