api / koma.matrix.cblas / CBlasMatrix
CBlasMatrix
class CBlasMatrix :
Matrix
<
Double
>,
DoubleMatrixBase
An implementation of the Matrix interface using raw cblas calls.
Parameters
storage
- A raw double *
with enough space preallocated to hold\
the matrix. The CBlasMatrix takes full control of the
pointer, including freeing the memory pointed at.
Constructors
Name | Summary |
---|---|
<init> | CBlasMatrix(nRows: Int , nCols: Int )``CBlasMatrix(nRows: Int , nCols: Int , storage: <ERROR CLASS><<ERROR CLASS>>) An implementation of the Matrix interface using raw cblas calls. |
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 < CBlasMatrix , CBlasMatrix > |
SVD | fun SVD(): Triple < CBlasMatrix , CBlasMatrix , CBlasMatrix > |
chol | fun chol(): CBlasMatrix (lower triangular) Cholesky decomposition of the matrix. Matrix must be positive-semi definite. |
copy | fun copy(): CBlasMatrix Returns a copy of this matrix (same values, new memory) |
det | fun det(): Nothing Determinant of the matrix |
diag | fun diag(): Nothing |
finalize | fun finalize(): Unit |
getBaseMatrix | fun getBaseMatrix(): <ERROR CLASS><<ERROR CLASS>> 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). |
getDouble | fun getDouble(i: Int , j: Int ): <ERROR CLASS> fun getDouble(i: Int ): <ERROR CLASS> |
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(): MatrixFactory < CBlasMatrix > Because sometimes all you have is a Matrix, but you really want a MatrixFactory. |
inv | fun inv(): CBlasMatrix Matrix inverse (square matrices) |
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(): Nothing Pseudo-inverse of (non-square) matrix |
setDouble | fun setDouble(i: Int , v: Double ): Unit fun setDouble(i: Int , j: Int , v: Double ): Unit |
solve | fun solve(other: Matrix < Double >): CBlasMatrix 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 >): CBlasMatrix |
trace | fun trace(): Nothing The matrix trace. |
Inherited Functions
Name | Summary |
---|---|
T | open fun T(): Matrix < T > Transpose operator. |
argMax | abstract fun argMax(): Int Row major 1D index. |
argMin | abstract fun argMin(): Int Row major 1D index. |
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. |
div | abstract operator fun div(other: Int ): Matrix < T > abstract operator fun div(other: T ): Matrix < T > |
elementSum | abstract fun elementSum(): T Sum of all the elements in the matrix. |
elementTimes | abstract fun elementTimes(other: Matrix < T >): Matrix < T > Element-wise multiplication with another matrix |
epow | abstract fun epow(other: T ): Matrix < T > Element-wise exponentiation of each element in the matrix abstract infix fun epow(other: Int ): Matrix < T > |
expm | abstract fun expm(): Matrix < T > Compute the matrix exponential e^x (NOT elementwise) |
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 |
getCol | abstract fun getCol(col: Int ): Matrix < T > |
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 |
getRow | abstract fun getRow(row: Int ): Matrix < T > |
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. |
max | abstract fun max(): T Maximum value contained in the matrix |
mean | abstract fun mean(): T Mean (average) of all the elements in the matrix. |
min | abstract fun min(): T Minimum value contained in the matrix |
minus | abstract operator fun minus(other: T ): Matrix < T > abstract operator fun minus(other: Matrix < T >): Matrix < T > |
plus | abstract operator fun plus(other: T ): Matrix < T > abstract operator fun plus(other: Matrix < T >): Matrix < T > |
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 |
setCol | abstract fun setCol(index: Int , col: Matrix < T >): Unit |
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 |
setRow | abstract fun setRow(index: Int , row: Matrix < T >): Unit |
setShort | open fun setShort(vararg indices: Int , value: Short ): Nothing |
shape | open fun shape(): List < Int > |
times | abstract operator fun times(other: T ): Matrix < T > |
to2DArray | open fun to2DArray(): Array < DoubleArray > Returns a Matrix as a double 2D array. Intended for MATLAB interop. |
toIterable | open fun toIterable(): Iterable < T > |
transpose | abstract fun transpose(): Matrix < T > Transpose of the matrix |
unaryMinus | abstract operator fun unaryMinus(): Matrix < 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 > |