api / koma.matrix.jblas / JBlasMatrix
JBlasMatrix
class JBlasMatrix :
Matrix
<
Double
>,
DoubleMatrixBase
An implementation of the Matrix interface using jBlas. You should rarely construct this class directly, instead make one via the top-level functions in creators.kt (e.g. zeros(5,5)) or JBlasMatrixFactory.
Constructors
Name | Summary |
---|---|
<init> | JBlasMatrix(storage: DoubleMatrix) An implementation of the Matrix interface using jBlas. You should rarely construct this class directly, instead make one via the top-level functions in creators.kt (e.g. zeros(5,5)) or JBlasMatrixFactory. |
Properties
Name | Summary |
---|---|
storage | var storage: DoubleMatrix |
Inherited Properties
Name | Summary |
---|---|
T | open val T: Matrix < T > Transpose operator. |
size | open val size: Int |
Functions
Name | Summary |
---|---|
LU | fun LU(): Triple < Matrix < Double >, Matrix < Double >, Matrix < Double >> LU Decomposition. Returns p, l, u matrices as a triple. |
QR | fun QR(): Pair < Matrix < Double >, Matrix < Double >> |
SVD | fun SVD(): Triple < Matrix < Double >, Matrix < Double >, Matrix < Double >> |
argMax | fun argMax(): Int Row major 1D index. |
argMin | fun argMin(): Int Row major 1D index. |
chol | fun chol(): JBlasMatrix (lower triangular) Cholesky decomposition of the matrix. Matrix must be positive-semi definite. |
copy | fun copy(): JBlasMatrix Returns a copy of this matrix (same values, new memory) |
det | fun det(): Double Determinant of the matrix |
diag | fun diag(): JBlasMatrix |
div | fun div(other: Int ): JBlasMatrix fun div(other: Double ): JBlasMatrix |
elementSum | fun elementSum(): Double Sum of all the elements in the matrix. |
elementTimes | fun elementTimes(other: Matrix < Double >): JBlasMatrix Element-wise multiplication with another matrix |
epow | fun epow(other: Double ): JBlasMatrix Element-wise exponentiation of each element in the matrix fun epow(other: Int ): Matrix < Double > |
expm | fun expm(): JBlasMatrix Compute the matrix exponential e^x (NOT elementwise) |
getBaseMatrix | fun getBaseMatrix(): DoubleMatrix Returns the underlying matrix object from the back-end this Matrix is wrapping. This should be used sparingly (as it breaks encapsulation), but it can increase performance by using computation specifically designed for a particular back-end. Code using this method should not rely on a particular back-end, and should always fallback to slow generic code if an unrecognized matrix is returned here (e.g. use get and set) to access the elements generically). |
getCol | fun getCol(col: Int ): JBlasMatrix |
getDouble | fun getDouble(i: Int , j: Int ): Double fun getDouble(i: Int ): Double |
getDoubleData | fun getDoubleData(): DoubleArray Retrieves the data formatted as doubles in row-major order This method is only for performance over potentially boxing get(Double) methods. This method may or may not return a copy, and thus should be treated as read-only unless backend behavior is known. |
getFactory | fun getFactory(): JBlasMatrixFactory Because sometimes all you have is a Matrix, but you really want a MatrixFactory. |
getRow | fun getRow(row: Int ): JBlasMatrix |
inv | fun inv(): JBlasMatrix Matrix inverse (square matrices) |
max | fun max(): Double Maximum value contained in the matrix |
mean | fun mean(): Double Mean (average) of all the elements in the matrix. |
min | fun min(): Double Minimum value contained in the matrix |
minus | fun minus(other: Double ): JBlasMatrix fun minus(other: Matrix < Double >): JBlasMatrix |
normF | fun normF(): Double Frobenius normal of the matrix |
normIndP1 | fun normIndP1(): Double Induced, p=1 normal of the matrix. Equivalent of norm(matrix,1) in scipy. |
numCols | fun numCols(): Int Number of columns in the matrix |
numRows | fun numRows(): Int Number of rows in the matrix |
pinv | fun pinv(): Matrix < Double > Pseudo-inverse of (non-square) matrix |
plus | fun plus(other: Double ): JBlasMatrix fun plus(other: Matrix < Double >): JBlasMatrix |
setCol | fun setCol(index: Int , col: Matrix < Double >): Unit |
setDouble | fun setDouble(i: Int , v: Double ): Unit fun setDouble(i: Int , j: Int , v: Double ): Unit |
setRow | fun setRow(index: Int , row: Matrix < Double >): Unit |
solve | fun solve(other: Matrix < Double >): Matrix < Double > Solves A*X=B for X, returning X (X is either column vector or a matrix composed of several col vectors). A is the current matrix, B is the passed in other)/other), and X is the returned matrix. |
times | fun times(other: Matrix < Double >): JBlasMatrix fun times(other: Double ): JBlasMatrix |
trace | fun trace(): Double The matrix trace. |
transpose | fun transpose(): JBlasMatrix Transpose of the matrix |
unaryMinus | fun unaryMinus(): JBlasMatrix |
Inherited Functions
Name | Summary |
---|---|
T | open fun T(): Matrix < T > Transpose operator. |
asColVector | open fun asColVector(): Matrix < T > Returns the given vector as a row vector. Will call transpose() on row vectors |
asRowVector | open fun asRowVector(): Matrix < T > Returns the given vector as a row vector. Will call transpose() on column vectors |
cumSum | open fun cumSum(): Matrix < T > Calculates the cumulative (ongoing) sum of a matrix's elements. For example, cumsum(mat[1,2,3]) would return mat[1,3,6] . Assumes matrix type is convertible to double. |
filterCols | open fun filterCols(f: (col: Matrix < T >) -> Boolean ): Matrix < T > Builds a new matrix with a subset of the columns of this matrix, using only the columns for which the function f returns true. |
filterColsIndexed | open fun filterColsIndexed(f: (colIndex: Int , col: Matrix < T >) -> Boolean ): Matrix < T > Builds a new matrix with a subset of the columns of this matrix, using only the columns for which the function f returns true. |
filterRows | open fun filterRows(f: (row: Matrix < T >) -> Boolean ): Matrix < T > Builds a new matrix with a subset of the rows of this matrix, using only the rows for which the function f returns true. |
filterRowsIndexed | open fun filterRowsIndexed(f: (rowIndex: Int , row: Matrix < T >) -> Boolean ): Matrix < T > Builds a new matrix with a subset of the rows of this matrix, using only the rows for which the function f returns true. |
forEachCol | open fun forEachCol(f: ( Matrix < T >) -> Unit ): Unit Passes each col from left to right into a function. |
forEachRow | open fun forEachRow(f: ( Matrix < T >) -> Unit ): Unit Passes each row from top to bottom into a function. |
getBaseArray | open fun getBaseArray(): Any |
getByte | open fun getByte(vararg indices: Int ): Byte |
getDouble | open fun getDouble(vararg indices: Int ): Double |
getFloat | abstract fun getFloat(i: Int , j: Int ): Float open fun getFloat(vararg indices: Int ): Float |
getGeneric | abstract fun getGeneric(i: Int , j: Int ): T open fun getGeneric(vararg indices: Int ): T |
getInt | abstract fun getInt(i: Int , j: Int ): Int open fun getInt(vararg indices: Int ): Int |
getLinear | open fun getLinear(index: Int ): T |
getLong | open fun getLong(vararg indices: Int ): Long |
getShort | open fun getShort(vararg indices: Int ): Short |
mapCols | open fun mapCols(f: ( Matrix < T >) -> Matrix < T >): Matrix < T > Takes each col in a matrix, passes them through f, and puts the output of f into a col of an output matrix. |
mapColsToList | open fun <U> mapColsToList(f: ( Matrix < T >) -> U ): List < U > Takes each col in a matrix, passes them through f, and puts the outputs into a List. In contrast to this#mapCols, the usage of a list as the output container allows for arbitrary output types, such as taking a double matrix and returning a list of strings. |
mapRows | open fun mapRows(f: ( Matrix < T >) -> Matrix < T >): Matrix < T > Takes each row in a matrix, passes them through f, and puts the output of f into a row of an output matrix. |
mapRowsToList | open fun <U> mapRowsToList(f: ( Matrix < T >) -> U ): List < U > Takes each row in a matrix, passes them through f, and puts the outputs into a List. In contrast to this#mapRows, the usage of a list as the output container allows for arbitrary output types, such as taking a double matrix and returning a list of strings. |
pow | open infix fun pow(exponent: Int ): Matrix < T > Multiplies the matrix by itself exponent times (using matrix multiplication). |
repr | open fun repr(): String |
selectCols | open fun selectCols(vararg idxs: Int ): Matrix < T > Select a set of cols from a matrix to form the cols of a new matrix. For example, if you wanted a new matrix consisting of the first, second, and fifth cols of an input matrix, you would write input.selectCols(0,1,4) .open fun <U : Number > selectCols(idxs: Matrix < U >): Matrix < T > |
selectRows | open fun selectRows(vararg idxs: Int ): Matrix < T > Select a set of rows from a matrix to form the rows of a new matrix. For example, if you wanted a new matrix consisting of the first, second, and fifth rows of an input matrix, you would write input.selectRows(0,1,4) .open fun <U : Number > selectRows(idxs: Matrix < U >): Matrix < T > |
setByte | open fun setByte(vararg indices: Int , value: Byte ): Nothing |
setDouble | open fun setDouble(vararg indices: Int , value: Double ): Unit |
setFloat | abstract fun setFloat(i: Int , j: Int , v: Float ): Unit open fun setFloat(vararg indices: Int , value: Float ): Unit |
setGeneric | abstract fun setGeneric(i: Int , j: Int , v: T ): Unit open fun setGeneric(vararg indices: Int , value: T ): Unit |
setInt | abstract fun setInt(i: Int , j: Int , v: Int ): Unit open fun setInt(vararg indices: Int , value: Int ): Unit |
setLinear | open fun setLinear(index: Int , value: T ): Unit |
setLong | open fun setLong(vararg indices: Int , value: Long ): Nothing |
setShort | open fun setShort(vararg indices: Int , value: Short ): Nothing |
shape | open fun shape(): List < Int > |
to2DArray | open fun to2DArray(): Array < DoubleArray > Returns a Matrix as a double 2D array. Intended for MATLAB interop. |
toIterable | open fun toIterable(): Iterable < T > |
wrapRange | open fun wrapRange(range: IntRange , max: Int ): IntRange |
Extension Functions
Name | Summary |
---|---|
all | fun Matrix < Double >.all(f: ( Double ) -> Boolean ): Boolean fun <T> Matrix < T >.all(f: ( T ) -> Boolean ): Boolean Checks to see if all elements cause f to return true. |
allClose | fun Matrix < Double >.allClose(other: Matrix < Double >, rtol: Double = 1e-05, atol: Double = 1e-08): Boolean |
any | fun Matrix < Double >.any(f: ( Double ) -> Boolean ): Boolean fun <T> Matrix < T >.any(f: ( T ) -> Boolean ): Boolean Checks to see if any element in the matrix causes f to return true. |
checkIndices | fun <T> NDArray < T >.checkIndices(indices: IntArray ): IntArray |
checkLinearIndex | fun <T> NDArray < T >.checkLinearIndex(index: Int ): Int |
div | operator fun NDArray < Double >.div(other: Double ): NDArray < Double > |
emul | infix fun Matrix < Double >.emul(other: Matrix < Double >): Matrix < Double > Allow infix operator "a emul b" to be element-wise multiplication of two matrices. |
fill | fun Matrix < Double >.fill(f: (row: Int , col: Int ) -> Double ): Matrix < Double > fun <T> Matrix < T >.fill(f: (row: Int , col: Int ) -> T ): Matrix < T > Fills the matrix with the values returned by the input function. fun NDArray < Double >.fill(f: (idx: IntArray ) -> Double ): NDArray < Double > fun <T> NDArray < T >.fill(f: (idx: IntArray ) -> T ): NDArray < T > |
fillBoth | fun NDArray < Double >.fillBoth(f: (nd: IntArray , linear: Int ) -> Double ): NDArray < Double > fun <T> NDArray < T >.fillBoth(f: (nd: IntArray , linear: Int ) -> T ): NDArray < T > |
fillLinear | fun NDArray < Double >.fillLinear(f: (idx: Int ) -> Double ): NDArray < Double > fun <T> NDArray < T >.fillLinear(f: (idx: Int ) -> T ): NDArray < T > |
forEach | fun <T> Matrix < T >.forEach(f: ( T ) -> Unit ): Unit Passes each element in row major order into a function. fun <T> NDArray < T >.forEach(f: (ele: T ) -> Unit ): Unit Takes each element in a NDArray and passes them through f. |
forEachIndexed | fun Matrix < Double >.forEachIndexed(f: (row: Int , col: Int , ele: Double ) -> Unit ): Unit fun <T> Matrix < T >.forEachIndexed(f: (row: Int , col: Int , ele: T ) -> Unit ): Unit Passes each element in row major order into a function along with its index location. fun NDArray < Double >.forEachIndexed(f: (idx: Int , ele: Double ) -> Unit ): Unit fun <T> NDArray < T >.forEachIndexed(f: (idx: Int , ele: T ) -> Unit ): Unit Takes each element in a NDArray and passes them through f. Index given to f is a linear index, depending on the underlying storage major dimension. |
forEachIndexedN | fun NDArray < Double >.forEachIndexedN(f: (idx: IntArray , ele: Double ) -> Unit ): Unit fun <T> NDArray < T >.forEachIndexedN(f: (idx: IntArray , ele: T ) -> Unit ): Unit Takes each element in a NDArray and passes them through f. Index given to f is the full ND index of the element. |
linearToNIdx | fun <T> NDArray < T >.linearToNIdx(linear: Int ): IntArray Given the 1D index of an element in the underlying storage, find the corresponding ND index. Inverse of nIdxToLinear. |
map | fun <T> Matrix < T >.map(f: ( T ) -> T ): Matrix < T > Takes each element in a matrix, passes them through f, and puts the output of f into an output matrix. This process is done in row-major order. fun <T> NDArray < T >.map(f: ( T ) -> T ): DefaultGenericNDArray < T > Takes each element in a NDArray, passes them through f, and puts the output of f into an output NDArray. |
mapIndexed | fun Matrix < Double >.mapIndexed(f: (row: Int , col: Int , ele: Double ) -> Double ): Matrix < Double > fun <T> Matrix < T >.mapIndexed(f: (row: Int , col: Int , ele: T ) -> T ): Matrix < T > Takes each element in a matrix, passes them through f, and puts the output of f into an output matrix. This process is done in row-major order. fun NDArray < Double >.mapIndexed(f: (idx: Int , ele: Double ) -> Double ): NDArray < Double > fun <T> NDArray < T >.mapIndexed(f: (idx: Int , ele: T ) -> T ): DefaultGenericNDArray < T > Takes each element in a NDArray, passes them through f, and puts the output of f into an output NDArray. Index given to f is a linear index, depending on the underlying storage major dimension. |
mapIndexedN | fun NDArray < Double >.mapIndexedN(f: (idx: IntArray , ele: Double ) -> Double ): NDArray < Double > fun <T> NDArray < T >.mapIndexedN(f: (idx: IntArray , ele: T ) -> T ): NDArray < T > Takes each element in a NDArray, passes them through f, and puts the output of f into an output NDArray. Index given to f is the full ND index of the element. |
minus | operator fun NDArray < Double >.minus(other: Double ): NDArray < Double > operator fun NDArray < Double >.minus(other: NDArray < Double >): NDArray < Double >``operator fun Matrix < Double >.minus(value: Int ): Matrix < Double > Allow operator overloading with non-Double scalars |
nIdxToLinear | fun <T> NDArray < T >.nIdxToLinear(indices: IntArray ): Int Given a ND index into this array, find the corresponding 1D index in the raw underlying 1D storage array. |
plus | operator fun NDArray < Double >.plus(other: Double ): NDArray < Double > operator fun NDArray < Double >.plus(other: NDArray < Double >): NDArray < Double >``operator fun Matrix < Double >.plus(value: Int ): Matrix < Double > Allow operator overloading with non-Double scalars |
pow | infix fun NDArray < Double >.pow(exponent: Int ): NDArray < Double > |
safeNIdxToLinear | fun <T> NDArray < T >.safeNIdxToLinear(indices: IntArray ): Int |
set | operator fun Matrix < Double >.set(i: Int , v: Double ): Unit operator fun <T> Matrix < T >.set(i: Int , v: T ): Unit Set the ith element in the matrix. If 2D, selects elements in row-major order. operator fun Matrix < Double >.set(i: Int , j: Int , v: Double ): Unit operator fun Matrix < Double >.set(rows: IntRange , cols: IntRange , value: Double ): Unit operator fun Matrix < Double >.set(rows: Int , cols: IntRange , value: Double ): Unit operator fun Matrix < Double >.set(rows: IntRange , cols: Int , value: Double ): Unit operator fun Matrix < Double >.set(i: Int , v: Int ): Unit operator fun Matrix < Double >.set(i: Int , j: Int , v: Int ): Unit operator fun <T> Matrix < T >.set(i: Int , j: Int , v: T ): Unit operator fun <T> Matrix < T >.set(rows: IntRange , cols: IntRange , value: T ): Unit operator fun <T> Matrix < T >.set(rows: Int , cols: IntRange , value: T ): Unit operator fun <T> Matrix < T >.set(rows: IntRange , cols: Int , value: T ): Unit operator fun NDArray < Double >.set(vararg indices: Int , value: NDArray < Double >): Unit operator fun NDArray < Double >.set(vararg indices: Int , value: Double ): Unit operator fun <T> NDArray < T >.set(vararg indices: Int , value: NDArray < T >): Unit operator fun <T> NDArray < T >.set(vararg indices: Int , value: T ): Unit operator fun Matrix < Double >.set(rows: IntRange , cols: IntRange , value: Matrix < Double >): Unit operator fun <T> Matrix < T >.set(rows: IntRange , cols: IntRange , value: Matrix < T >): Unit Allow assignment to a slice, e.g. matrix[1..2, 3..4] =something. Note that the range 1..2 is inclusive, so it will retrieve row 1 and 2. Use 1.until(2) for a non-inclusive range.operator fun Matrix < Double >.set(rows: Int , cols: IntRange , value: Matrix < Double >): Unit operator fun <T> Matrix < T >.set(rows: Int , cols: IntRange , value: Matrix < T >): Unit Allow assignment to a slice, e.g. matrix[2, 3..4] =something. Note that the range 3..4 is inclusive, so it will retrieve col 3 and 4. Use 1.until(2) for a non-inclusive range.operator fun Matrix < Double >.set(rows: IntRange , cols: Int , value: Matrix < Double >): Unit operator fun <T> Matrix < T >.set(rows: IntRange , cols: Int , value: Matrix < T >): Unit Allow assignment to a slice, e.g. matrix[1..2, 3] =something. Note that the range 1..2 is inclusive, so it will retrieve row 1 and 2. Use 1.until(2) for a non-inclusive range. |
times | operator fun NDArray < Double >.times(other: NDArray < Double >): NDArray < Double > operator fun NDArray < Double >.times(other: Double ): NDArray < Double >``operator fun Matrix < Double >.times(other: Int ): Matrix < Double > Multiply a scalar by a matrix |
toDoubleArray | fun NDArray < Double >.toDoubleArray(): DoubleArray Converts this NDArray into a one-dimensional DoubleArray in row-major order. |
toMatrix | fun NDArray < Double >.toMatrix(): Matrix < Double > |
toMatrixOrNull | fun <T> NDArray < T >.toMatrixOrNull(): Matrix < T >? |
toTypedArray | fun <T> NDArray < T >.toTypedArray(): Array < T > Converts this NDArray into a one-dimensional Array in row-major order. |
unaryMinus | operator fun NDArray < Double >.unaryMinus(): NDArray < Double > |
validate | fun Matrix < Double >.validate(fn: ValidationContext .() -> Unit ): Unit Use the given fn to validate a matrix. Return either the matrix itself or a copy that has been transformed to match the validation rules. fun Matrix < Double >.validate(name: String , fn: ValidationContext .() -> Unit ): Unit Use the given fn to validate a matrix with the given name. Return either the matrix itself or a copy that has been transformed to match the validation rules. |
widthOfDims | fun <T> NDArray < T >.widthOfDims(): ArrayList < Int > |