api / koma.matrix.common / MatrixBase
MatrixBase
abstract class MatrixBase<T> :Matrix<T>
Constructors
| Name | Summary |
|---|---|
| <init> | MatrixBase() |
Inherited Properties
| Name | Summary |
|---|---|
| T | open val T:Matrix<T>Transpose operator. |
| size | open val size:Int |
Functions
| Name | Summary |
|---|---|
| castOrCopy | fun <DType, TOuter :Matrix<DType>, TInner> castOrCopy(mat:Matrix<DType>, makeOuter: (TInner) ->TOuter, outerFac:MatrixFactory<TOuter>):TOuterAttempts to downcast a matrix to its specific subclass, accepting both inner wrapped types and outer types. Requires the TOuter constructor to be passed in because reified generics don't support ctor calls. If the passed mat cannot be cast, instead copies the data manually into a newly allocated matrix of the correct type. |
| equals | open fun equals(other:Any?):Boolean |
| hashCode | open fun hashCode():Int |
| toString | open fun toString():String |
Inherited Functions
| Name | Summary |
|---|---|
| LU | abstract fun LU():Triple<Matrix<T>,Matrix<T>,Matrix<T>>LU Decomposition. Returns p, l, u matrices as a triple. |
| QR | abstract fun QR():Pair<Matrix<T>,Matrix<T>> |
| SVD | abstract fun SVD():Triple<Matrix<T>,Matrix<T>,Matrix<T>> |
| T | open fun T():Matrix<T>Transpose operator. |
| argMax | abstract fun argMax():IntRow major 1D index. |
| argMin | abstract fun argMin():IntRow 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 |
| chol | abstract fun chol():Matrix<T>(lower triangular) Cholesky decomposition of the matrix. Matrix must be positive-semi definite. |
| copy | abstract fun copy():Matrix<T>Returns a copy of this matrix (same values, new memory) |
| 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. |
| det | abstract fun det():TDeterminant of the matrix |
| diag | abstract fun diag():Matrix<T> |
| div | abstract operator fun div(other:Int):Matrix<T>abstract operator fun div(other:T):Matrix<T> |
| elementSum | abstract fun elementSum():TSum 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):UnitPasses each col from left to right into a function. |
| forEachRow | open fun forEachRow(f: (Matrix<T>) ->Unit):UnitPasses each row from top to bottom into a function. |
| getBaseArray | open fun getBaseArray():Any |
| getBaseMatrix | abstract fun getBaseMatrix():AnyReturns 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). |
| getByte | open fun getByte(vararg indices:Int):Byte |
| getCol | abstract fun getCol(col:Int):Matrix<T> |
| getDouble | abstract fun getDouble(i:Int, j:Int):Doubleopen fun getDouble(vararg indices:Int):Double |
| getDoubleData | abstract fun getDoubleData():DoubleArrayRetrieves 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 | abstract fun getFactory():MatrixFactory<Matrix<T>>Because sometimes all you have is a Matrix, but you really want a MatrixFactory. |
| getFloat | abstract fun getFloat(i:Int, j:Int):Floatopen fun getFloat(vararg indices:Int):Float |
| getGeneric | abstract fun getGeneric(i:Int, j:Int):Topen fun getGeneric(vararg indices:Int):T |
| getInt | abstract fun getInt(i:Int, j:Int):Intopen 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 |
| inv | abstract fun inv():Matrix<T>Matrix inverse (square matrices) |
| 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():TMaximum value contained in the matrix |
| mean | abstract fun mean():TMean (average) of all the elements in the matrix. |
| min | abstract fun min():TMinimum value contained in the matrix |
| minus | abstract operator fun minus(other:T):Matrix<T>abstract operator fun minus(other:Matrix<T>):Matrix<T> |
| normF | abstract fun normF():TFrobenius normal of the matrix |
| normIndP1 | abstract fun normIndP1():TInduced, p=1 normal of the matrix. Equivalent of norm(matrix,1) in scipy. |
| numCols | abstract fun numCols():IntNumber of columns in the matrix |
| numRows | abstract fun numRows():IntNumber of rows in the matrix |
| pinv | abstract fun pinv():Matrix<T>Pseudo-inverse of (non-square) matrix |
| 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 | abstract fun setDouble(i:Int, j:Int, v:Double):Unitopen fun setDouble(vararg indices:Int, value:Double):Unit |
| setFloat | abstract fun setFloat(i:Int, j:Int, v:Float):Unitopen fun setFloat(vararg indices:Int, value:Float):Unit |
| setGeneric | abstract fun setGeneric(i:Int, j:Int, v:T):Unitopen fun setGeneric(vararg indices:Int, value:T):Unit |
| setInt | abstract fun setInt(i:Int, j:Int, v:Int):Unitopen 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> |
| solve | abstract fun solve(other:Matrix<T>):Matrix<T>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 | abstract operator fun times(other:Matrix<T>):Matrix<T>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> |
| trace | abstract fun trace():TThe matrix trace. |
| 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 <T>Matrix<T>.all(f: (T) ->Boolean):BooleanChecks to see if all elements cause f to return true. |
| any | fun <T>Matrix<T>.any(f: (T) ->Boolean):BooleanChecks 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 |
| fill | 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 <T>NDArray<T>.fill(f: (idx:IntArray) ->T):NDArray<T> |
| fillBoth | fun <T>NDArray<T>.fillBoth(f: (nd:IntArray, linear:Int) ->T):NDArray<T> |
| fillLinear | fun <T>NDArray<T>.fillLinear(f: (idx:Int) ->T):NDArray<T> |
| forEach | fun <T>Matrix<T>.forEach(f: (T) ->Unit):UnitPasses each element in row major order into a function. fun <T>NDArray<T>.forEach(f: (ele:T) ->Unit):UnitTakes each element in a NDArray and passes them through f. |
| forEachIndexed | fun <T>Matrix<T>.forEachIndexed(f: (row:Int, col:Int, ele:T) ->Unit):UnitPasses each element in row major order into a function along with its index location. fun <T>NDArray<T>.forEachIndexed(f: (idx:Int, ele:T) ->Unit):UnitTakes 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 <T>NDArray<T>.forEachIndexedN(f: (idx:IntArray, ele:T) ->Unit):UnitTakes each element in a NDArray and passes them through f. Index given to f is the full ND index of the element. |
| get | operator fun <T>Matrix<T>.get(i:Int, j:Int):Toperator fun <T>NDArray<T>.get(vararg indices:IntRange):NDArray<T>operator fun <T>NDArray<T>.get(vararg indices:Int):Toperator fun <T>Matrix<T>.get(i:Int):TGets the ith element in the matrix. If 2D, selects elements in row-major order. operator fun <T>Matrix<T>.get(rows:IntRange, cols:IntRange):Matrix<T>Allow slicing, e.g. matrix[1..2, 3..4]. 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 <T>Matrix<T>.get(rows:IntRange, cols:Int):Matrix<T>Allows for slicing of the rows and selection of a single column operator fun <T>Matrix<T>.get(rows:Int, cols:IntRange):Matrix<T>Allows for slicing of the cols and selection of a single row |
| linearToNIdx | fun <T>NDArray<T>.linearToNIdx(linear:Int):IntArrayGiven 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 <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 <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 <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. |
| nIdxToLinear | fun <T>NDArray<T>.nIdxToLinear(indices:IntArray):IntGiven a ND index into this array, find the corresponding 1D index in the raw underlying 1D storage array. |
| reshape | fun <T>Matrix<T>.reshape(rows:Int, cols:Int):Matrix<T>Returns a new Matrix with the given shape, populated with the data in this array. fun <T>NDArray<T>.reshape(vararg dims:Int):NDArray<T>Returns a new NDArray with the given shape, populated with the data in this array. |
| safeNIdxToLinear | fun <T>NDArray<T>.safeNIdxToLinear(indices:IntArray):Int |
| set | operator fun <T>Matrix<T>.set(i:Int, v:T):UnitSet the ith element in the matrix. If 2D, selects elements in row-major order. operator fun <T>Matrix<T>.set(i:Int, j:Int, v:T):Unitoperator fun <T>Matrix<T>.set(rows:IntRange, cols:IntRange, value:T):Unitoperator fun <T>Matrix<T>.set(rows:Int, cols:IntRange, value:T):Unitoperator fun <T>Matrix<T>.set(rows:IntRange, cols:Int, value:T):Unitoperator fun <T>NDArray<T>.set(vararg indices:Int, value:NDArray<T>):Unitoperator fun <T>NDArray<T>.set(vararg indices:Int, value:T):Unitoperator fun <T>Matrix<T>.set(rows:IntRange, cols:IntRange, value:Matrix<T>):UnitAllow 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 <T>Matrix<T>.set(rows:Int, cols:IntRange, value:Matrix<T>):UnitAllow 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 <T>Matrix<T>.set(rows:IntRange, cols:Int, value:Matrix<T>):UnitAllow 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. |
| 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. |
| widthOfDims | fun <T>NDArray<T>.widthOfDims():ArrayList<Int> |
Inheritors
| Name | Summary |
|---|---|
| DoubleMatrixBase | abstract class DoubleMatrixBase :MatrixBase<Double>Some functionality to help more easily implement double based koma backends. Feel free to not use if your backend has fast implementations of these functions. |