From f30a6b3c884de3f2c986ac29f87c4899eea67319 Mon Sep 17 00:00:00 2001
From: Jozsef Kutas
*
- * SimpleMatrix K = P.mult(H.transpose().mult(S.invert()));
+ * {@code SimpleMatrix K = P.mult(H.transpose().mult(S.invert()));}
*
* Working with both a primitive matrix and SimpleMatrix in the same code base is easy. - * To access the internal DMatrixRMaj in a SimpleMatrix simply call {@link SimpleMatrix#getMatrix()}. - * To turn a DMatrixRMaj into a SimpleMatrix use {@link SimpleMatrix#wrap(org.ejml.data.Matrix)}. Not + * To access the internal Matrix in a SimpleMatrix simply call {@link SimpleMatrix#getMatrix()}. + * To turn a Matrix into a SimpleMatrix use {@link SimpleMatrix#wrap(org.ejml.data.Matrix)}. Not * all operations in EJML are provided for SimpleMatrix, but can be accessed by extracting the internal * matrix. *
@@ -74,13 +74,13 @@ * * *- * If SimpleMatrix is extended then the protected function {link #createMatrix} should be extended and return + * If SimpleMatrix is extended then the protected function {@link #createMatrix} should be extended and return * the child class. The results of SimpleMatrix operations will then be of the correct matrix type. *
* *- * The object oriented approach used in SimpleMatrix was originally inspired by Jama. - * http://math.nist.gov/javanumerics/jama/ + * The object oriented approach used in SimpleMatrix was originally inspired by + * JAMA. *
* * @author Peter Abeles @@ -203,12 +203,19 @@ public SimpleMatrix( int numRows, int numCols ) { setMatrix(new DMatrixRMaj(numRows, numCols)); } - public SimpleMatrix( int numRows, int numCols, Class type ) { + /** + * Creates a new matrix that is initially set to zero with the specified dimensions and type. + * + * @param numRows The number of rows in the matrix. + * @param numCols The number of columns in the matrix. + * @param type The matrix type + */ + public SimpleMatrix( int numRows, int numCols, Class> type ) { this(numRows, numCols, MatrixType.lookup(type)); } /** - * Create a simple matrix of the specified type + * Creates a new matrix that is initially set to zero with the specified dimensions and type. * * @param numRows The number of rows in the matrix. * @param numCols The number of columns in the matrix. @@ -274,10 +281,11 @@ public static SimpleMatrix wrap( Matrix internalMat ) { } /** - * Returns a filled matrix (numRows x numCols) of the value a. - * @param numRows The number of numRows. - * @param numCols The number of columns. - * @param a The number to fill the matrix with. + * Creates a new matrix filled with the specified value. This will wrap a {@link DMatrixRMaj}. + * + * @param numRows The number of rows in the matrix. + * @param numCols The number of columns in the matrix. + * @param a The value to fill the matrix with. * @return A matrix filled with the value a. */ public static SimpleMatrix filled( int numRows, int numCols, double a ) { @@ -287,9 +295,10 @@ public static SimpleMatrix filled( int numRows, int numCols, double a ) { } /** - * Returns a matrix of ones. - * @param numRows The number of numRows. - * @param numCols The number of columns. + * Creates a new matrix filled with ones. This will wrap a {@link DMatrixRMaj}. + * + * @param numRows The number of rows in the matrix. + * @param numCols The number of columns in the matrix. * @return A matrix of ones. */ public static SimpleMatrix ones( int numRows, int numCols ) { @@ -297,7 +306,7 @@ public static SimpleMatrix ones( int numRows, int numCols ) { } /** - * Creates a new identity matrix with the specified size. + * Creates a new identity matrix with the specified size. This will wrap a {@link DMatrixRMaj}. * * @param width The width and height of the matrix. * @return An identity matrix. @@ -307,6 +316,13 @@ public static SimpleMatrix identity( int width ) { return identity(width, DMatrixRMaj.class); } + /** + * Creates a new identity matrix with the specified size and type. + * + * @param width The width and height of the matrix. + * @param type The matrix type + * @return An identity matrix. + */ public static SimpleMatrix identity( int width, Class> type ) { var ret = new SimpleMatrix(width, width, type); ret.ops.setIdentity(ret.mat); @@ -316,7 +332,7 @@ public static SimpleMatrix identity( int width, Class> type ) { /** ** Creates a matrix where all but the diagonal elements are zero. The values - * of the diagonal elements are specified by the parameter 'vals'. + * of the diagonal elements are specified by the parameter 'vals'. This will wrap a {@link DMatrixRMaj}. *
* *@@ -332,7 +348,12 @@ public static SimpleMatrix diag( double... vals ) { } /** - * Creates a real valued diagonal matrix of the specified type + * Creates a matrix where all but the diagonal elements are zero. The values + * of the diagonal elements are specified by the parameter 'vals'. + * + * @param type The matrix type + * @param vals The values of the diagonal elements. + * @return A diagonal matrix. */ public static SimpleMatrix diag( Class> type, double... vals ) { var M = new SimpleMatrix(vals.length, vals.length, type); @@ -343,16 +364,16 @@ public static SimpleMatrix diag( Class> type, double... vals ) { } /** - *
- * Creates a new SimpleMatrix with random elements drawn from a uniform distribution from minValue to maxValue. - *
+ * Creates a random matrix with values drawn from the uniform distribution from minValue (inclusive) to + * maxValue (exclusive). This will wrap a {@link DMatrixRMaj}. * * @param numRows The number of rows in the new matrix * @param numCols The number of columns in the new matrix * @param minValue Lower bound * @param maxValue Upper bound - * @param rand The random number generator that's used to fill the matrix. @return The new random matrix. - * @see RandomMatrices_DDRM#fillUniform(DMatrixRMaj, java.util.Random) + * @param rand The random number generator that's used to fill the matrix. + * @return The new random matrix. + * @see RandomMatrices_DDRM#fillUniform(DMatrixD1, double, double, java.util.Random) */ public static SimpleMatrix random_DDRM( int numRows, int numCols, double minValue, double maxValue, Random rand ) { var ret = new SimpleMatrix(numRows, numCols); @@ -361,21 +382,39 @@ public static SimpleMatrix random_DDRM( int numRows, int numCols, double minValu } /** - * Creates a DDRM random matrix with values from 0.0 to 1.0. Random number generator is - * {@link ThreadLocalRandom#current()}. + * Creates a random matrix with values drawn from the uniform distribution from 0.0 (inclusive) to 1.0 (exclusive). + * + * @param numRows The number of rows in the new matrix + * @param numCols The number of columns in the new matrix + * @see #random_DDRM(int, int) */ public static SimpleMatrix random( int numRows, int numCols ) { return random_DDRM(numRows, numCols, 0.0, 1.0, ThreadLocalRandom.current()); } /** - * Creates a DDRM random matrix with values from 0.0 to 1.0. Random number generator is - * {@link ThreadLocalRandom#current()}. + * Creates a random matrix with values drawn from the uniform distribution from 0.0 (inclusive) to 1.0 (exclusive). + * The random number generator is {@link ThreadLocalRandom#current()}. This will wrap a {@link DMatrixRMaj}. + * + * @param numRows The number of rows in the new matrix + * @param numCols The number of columns in the new matrix */ public static SimpleMatrix random_DDRM( int numRows, int numCols ) { return random_DDRM(numRows, numCols, 0.0, 1.0, ThreadLocalRandom.current()); } + /** + * Creates a random matrix with values drawn from the uniform distribution from minValue (inclusive) to + * maxValue (exclusive). This will wrap a {@link FMatrixRMaj}. + * + * @param numRows The number of rows in the new matrix + * @param numCols The number of columns in the new matrix + * @param minValue Lower bound + * @param maxValue Upper bound + * @param rand The random number generator that's used to fill the matrix. + * @return The new random matrix. + * @see RandomMatrices_FDRM#fillUniform(FMatrixD1, float, float, java.util.Random) + */ public static SimpleMatrix random_FDRM( int numRows, int numCols, float minValue, float maxValue, Random rand ) { var ret = new SimpleMatrix(numRows, numCols, FMatrixRMaj.class); RandomMatrices_FDRM.fillUniform((FMatrixRMaj)ret.mat, minValue, maxValue, rand); @@ -383,13 +422,28 @@ public static SimpleMatrix random_FDRM( int numRows, int numCols, float minValue } /** - * Creates a FDRM random matrix with values from 0.0 to 1.0. Random number generator is - * {@link ThreadLocalRandom#current()}. + * Creates a random matrix with values drawn from the uniform distribution from 0.0 (inclusive) to 1.0 (exclusive). + * The random number generator is {@link ThreadLocalRandom#current()}. This will wrap a {@link FMatrixRMaj}. + * + * @param numRows The number of rows in the new matrix + * @param numCols The number of columns in the new matrix */ public static SimpleMatrix random_FDRM( int numRows, int numCols ) { return random_FDRM(numRows, numCols, 0.0f, 1.0f, ThreadLocalRandom.current()); } + /** + * Creates a random matrix with real and complex components drawn from the uniform distribution from + * minValue (inclusive) to maxValue (exclusive). This will wrap a {@link ZMatrixRMaj}. + * + * @param numRows The number of rows in the new matrix + * @param numCols The number of columns in the new matrix + * @param minValue Lower bound + * @param maxValue Upper bound + * @param rand The random number generator that's used to fill the matrix. + * @return The new random matrix. + * @see RandomMatrices_ZDRM#fillUniform(ZMatrixD1, double, double, java.util.Random) + */ public static SimpleMatrix random_ZDRM( int numRows, int numCols, double minValue, double maxValue, Random rand ) { var ret = new SimpleMatrix(numRows, numCols, MatrixType.ZDRM); RandomMatrices_ZDRM.fillUniform((ZMatrixRMaj)ret.mat, minValue, maxValue, rand); @@ -397,13 +451,28 @@ public static SimpleMatrix random_ZDRM( int numRows, int numCols, double minValu } /** - * Creates a ZDRM random matrix with values from 0.0 to 1.0. Random number generator is - * {@link ThreadLocalRandom#current()}. + * Creates a random matrix with values drawn from the uniform distribution from 0.0 (inclusive) to 1.0 (exclusive). + * The random number generator is {@link ThreadLocalRandom#current()}. This will wrap a {@link ZMatrixRMaj}. + * + * @param numRows The number of rows in the new matrix + * @param numCols The number of columns in the new matrix */ public static SimpleMatrix random_ZDRM( int numRows, int numCols ) { return random_ZDRM(numRows, numCols, 0.0, 1.0, ThreadLocalRandom.current()); } + /** + * Creates a random matrix with real and complex components drawn from the uniform distribution from + * minValue (inclusive) to maxValue (exclusive). This will wrap a {@link CMatrixRMaj}. + * + * @param numRows The number of rows in the new matrix + * @param numCols The number of columns in the new matrix + * @param minValue Lower bound + * @param maxValue Upper bound + * @param rand The random number generator that's used to fill the matrix. + * @return The new random matrix. + * @see RandomMatrices_CDRM#fillUniform(CMatrixD1, float, float, java.util.Random) + */ public static SimpleMatrix random_CDRM( int numRows, int numCols, float minValue, float maxValue, Random rand ) { var ret = new SimpleMatrix(numRows, numCols, MatrixType.CDRM); RandomMatrices_CDRM.fillUniform((CMatrixRMaj)ret.mat, minValue, maxValue, rand); @@ -411,8 +480,11 @@ public static SimpleMatrix random_CDRM( int numRows, int numCols, float minValue } /** - * Creates a CDRM random matrix with values from 0.0 to 1.0. Random number generator is - * {@link ThreadLocalRandom#current()}. + * Creates a random matrix with values drawn from the uniform distribution from 0.0 (inclusive) to 1.0 (exclusive). + * The random number generator is {@link ThreadLocalRandom#current()}. This will wrap a {@link CMatrixRMaj}. + * + * @param numRows The number of rows in the new matrix + * @param numCols The number of columns in the new matrix */ public static SimpleMatrix random_CDRM( int numRows, int numCols ) { return random_CDRM(numRows, numCols, 0.0f, 1.0f, ThreadLocalRandom.current()); @@ -425,6 +497,7 @@ public static SimpleMatrix random_CDRM( int numRows, int numCols ) { * * * @param covariance Covariance of the multivariate normal distribution + * @param random The random number generator that's used to fill the matrix. * @return Vector randomly drawn from the distribution * @see CovarianceRandomDraw_DDRM */ @@ -498,4 +571,5 @@ protected SimpleMatrix wrapMatrix( Matrix m ) { // // return ret; // } + } From 6a77d1f058152c60af903bb089949abcc2962e19 Mon Sep 17 00:00:00 2001 From: Jozsef Kutas- * EXTENDING: SimpleMatrix contains a list of narrowly focused functions for linear algebra. To harness + * The object oriented approach used in SimpleMatrix was originally inspired by + * JAMA. + *
+ * + *+ * SimpleMatrix contains a list of narrowly focused functions for linear algebra. To harness * the functionality for another application and to the number of functions it supports it is recommended * that one extends {@link SimpleBase} instead. This way the returned matrix type's of SimpleMatrix functions * will be of the appropriate types. See StatisticsMatrix inside of the examples directory. *
* *- * PERFORMANCE: The disadvantage of using this class is that it is more resource intensive, since + * If SimpleMatrix is extended then the protected function {@link #createMatrix} should be extended and return + * the child class. The results of SimpleMatrix operations will then be of the correct matrix type. + *
+ * + *+ * The disadvantage of using this class is that it is more resource intensive, since * it creates a new matrix each time an operation is performed. This makes the JavaVM work harder and * Java automatically initializes the matrix to be all zeros. Typically operations on small matrices * or operations that have a runtime linear with the number of elements are the most affected. More @@ -73,15 +85,196 @@ * neck is a more computationally complex operation. The best approach is benchmark and then optimize the code. *
* - *- * If SimpleMatrix is extended then the protected function {@link #createMatrix} should be extended and return - * the child class. The results of SimpleMatrix operations will then be of the correct matrix type. - *
+ *- * The object oriented approach used in SimpleMatrix was originally inspired by - * JAMA. - *
+ *+ * Returns a reference to the matrix that it uses internally if this is a {@link DMatrixRMaj}. + * Otherwise attempts to convert the internal matrix to a {@link DMatrixRMaj}. + *
+ * + * @return Reference to the internal matrix or converted internal matrix. + */ public DMatrixRMaj getDDRM() { return (mat.getType() == MatrixType.DDRM) ? (DMatrixRMaj)mat : (DMatrixRMaj)ConvertMatrixType.convert(mat, MatrixType.DDRM); } + /** + *+ * Returns a reference to the matrix that it uses internally if this is a {@link FMatrixRMaj}. + * Otherwise attempts to convert the internal matrix to a {@link FMatrixRMaj}. + *
+ * + * @return Reference to the internal matrix or converted internal matrix. + */ public FMatrixRMaj getFDRM() { return (mat.getType() == MatrixType.FDRM) ? (FMatrixRMaj)mat : (FMatrixRMaj)ConvertMatrixType.convert(mat, MatrixType.FDRM); } + /** + *+ * Returns a reference to the matrix that it uses internally if this is a {@link ZMatrixRMaj}. + * Otherwise attempts to convert the internal matrix to a {@link ZMatrixRMaj}. + *
+ * + * @return Reference to the internal matrix or converted internal matrix. + */ public ZMatrixRMaj getZDRM() { return (mat.getType() == MatrixType.ZDRM) ? (ZMatrixRMaj)mat : (ZMatrixRMaj)ConvertMatrixType.convert(mat, MatrixType.ZDRM); } + /** + *+ * Returns a reference to the matrix that it uses internally if this is a {@link CMatrixRMaj}. + * Otherwise attempts to convert the internal matrix to a {@link CMatrixRMaj}. + *
+ * + * @return Reference to the internal matrix or converted internal matrix. + */ public CMatrixRMaj getCDRM() { return (mat.getType() == MatrixType.CDRM) ? (CMatrixRMaj)mat : (CMatrixRMaj)ConvertMatrixType.convert(mat, MatrixType.CDRM); } + /** + *+ * Returns a reference to the matrix that it uses internally if this is a {@link DMatrixSparseCSC}. + * Otherwise attempts to convert the internal matrix to a {@link DMatrixSparseCSC}. + *
+ * + * @return Reference to the internal matrix or converted internal matrix. + */ public DMatrixSparseCSC getDSCC() { return (mat.getType() == MatrixType.DSCC) ? (DMatrixSparseCSC)mat : (DMatrixSparseCSC)ConvertMatrixType.convert(mat, MatrixType.DSCC); } + /** + *+ * Returns a reference to the matrix that it uses internally if this is a {@link FMatrixSparseCSC}. + * Otherwise attempts to convert the internal matrix to a {@link FMatrixSparseCSC}. + *
+ * + * @return Reference to the internal matrix or converted internal matrix. + */ public FMatrixSparseCSC getFSCC() { return (mat.getType() == MatrixType.FSCC) ? (FMatrixSparseCSC)mat : (FMatrixSparseCSC)ConvertMatrixType.convert(mat, MatrixType.FSCC); } From 78fa797ee514c988f30e5a5cef8fa056821b704d Mon Sep 17 00:00:00 2001 From: Jozsef KutasMethod | Description |
---|---|
{@link #SimpleMatrix(int, int, Class)} | + *Create a matrix filled with zeros with the specified internal type. |
{@link #SimpleMatrix(int, int, MatrixType)} | + *Create a matrix filled with zeros with the specified internal matrix type. |
{@link #SimpleMatrix(int, int)} | + *Create a matrix filled with zeros. |
{@link #SimpleMatrix(int, int, boolean, double...)} | + *Create a matrix with the provided double values, in either row-major or column-major order. |
{@link #SimpleMatrix(int, int, boolean, float...)} | + *Create a matrix with the provided float values, in either row-major or column-major order. |
{@link #SimpleMatrix(double[][])} | + *Create a matrix from a 2D double array. |
{@link #SimpleMatrix(float[][])} | + *Create a matrix from a 2D float array. |
{@link #SimpleMatrix(double[])} | + *Create a column vector from a 1D double array. |
{@link #SimpleMatrix(float[])} | + *Create a column vector from a 1D float array. |
{@link #SimpleMatrix(Matrix)} | + *Create a matrix copying the provided Matrix. |
{@link #SimpleMatrix(SimpleMatrix)} | + *Create a matrix copying the provided SimpleMatrix. |
{@link #wrap(Matrix)} | + *Create a matrix wrapping the provided Matrix. |
{@link #filled(int, int, double)} | + *Create a matrix filled with the specified value. |
{@link #ones(int, int)} | + *Create a matrix filled with ones. |
{@link #diag(double...)} | + *Create a diagonal matrix. |
{@link #diag(Class, double...)} | + *Create a diagonal matrix with the specified internal type. |
{@link #identity(int)} | + *Create an identity matrix. |
{@link #identity(int, Class)} | + *Create an identity matrix with the specified internal type. |
{@link #random(int, int)} | + *Create a random {@link DMatrixRMaj} with values drawn from a continuous uniform distribution on the + * unit interval. |
{@link #random_DDRM(int, int, double, double, Random)} | + *Create a random {@link DMatrixRMaj} with values drawn from a continuous uniform distribution using the + * provided random number generator. |
{@link #random_DDRM(int, int)} | + *Create a random {@link DMatrixRMaj} with values drawn from a continuous uniform distribution on the + * unit interval. |
{@link #random_FDRM(int, int, float, float, Random)} | + *Create a random {@link FMatrixRMaj} with values drawn from a continuous uniform distribution using the + * provided random number generator. |
{@link #random_FDRM(int, int)} | + *Create a random {@link FMatrixRMaj} with values drawn from a continuous uniform distribution on the + * unit interval. |
{@link #random_ZDRM(int, int, double, double, Random)} | + *Create a random {@link ZMatrixRMaj} with values drawn from a continuous uniform distribution using the + * provided random number generator. |
{@link #random_ZDRM(int, int)} | + *Create a random {@link ZMatrixRMaj} with values drawn from a continuous uniform distribution on the + * unit interval. |
{@link #random_CDRM(int, int, float, float, Random)} | + *Create a random {@link CMatrixRMaj} with values drawn from a continuous uniform distribution using the + * provided random number generator. |
{@link #random_CDRM(int, int)} | + *Create a random {@link CMatrixRMaj} with values drawn from a continuous uniform distribution on the + * unit interval. |
{@link #randomNormal(SimpleMatrix, Random)} | + *Create a random vector drawn from a multivariate normal distribution + * with the specified covariance. |
{@link #createLike()} | + *Create a matrix with the same shape and internal type as this matrix. |
{@link #copy()} | + *Create a copy of this matrix. |
Method | Description |
---|---|
{@link #get(int)} | + *Get the value of the {@code i}th entry in row-major order. |
{@link #get(int, int)} | + *Get the value of the {@code i,j}th entry. |
{@link #get(int, int, Complex_F64)} | + *Get the value of the {@code i,j}th entry as a complex number. |
{@link #getReal(int, int)} | + *Get the real component of the {@code i,j}th entry. |
{@link #getImaginary(int, int)} | + *Get the imaginary component of the {@code i,j}th entry. |
{@link #getRow(int)} | + *Get the {@code i}th row. |
{@link #getColumn(int)} | + *Get the {@code j}th column. |
{@link #extractVector(boolean, int)} | + *Extract the specified row or column vector. |
{@link #extractMatrix(int, int, int, int)} | + *Extract the specified submatrix. |
{@link #rows(int, int)} (int)} | + *Extract the specified rows. |
{@link #cols(int, int)} | + *Extract the specified columns. |
{@link #diag()} | + *Extract the matrix diagonal, or construct a diagonal matrix from a vector. |
Method | Description |
---|---|
{@link #set(int, double)} | + *Set the value of the {@code i}th entry in row-major order. |
{@link #set(int, int, double)} | + *Set the value of the {@code i,j}th entry. |
{@link #set(int, int, Complex_F64)} | + *Set the value of the {@code i,j}th entry as a complex number. |
{@link #set(int, int, double, double)} | + *Set the real and imaginary components of the {@code i,j}th entry. |
{@link #setRow(int, ConstMatrix)} | + *Set the {@code i}th row. |
{@link #setRow(int, int, double...)} | + *Set the values in the {@code i}th row. |
{@link #setColumn(int, ConstMatrix)} | + *Set the {@code j}th column. |
{@link #setColumn(int, int, double...)} | + *Set the values in the {@code j}th column. |
{@link #setTo(SimpleBase)} | + *Set the elements of this matrix to be equal to elements from another matrix. |
{@link #insertIntoThis(int, int, SimpleBase)} | + *Insert values from another matrix, starting in position {@code i,j}. |
{@link #fill(double)} | + *Set all elements of this matrix to be equal to specified value. |
{@link #fillComplex(double, double)} | + *Set all elements of this matrix to be equal to specified complex value. |
{@link #zero()} | + *Set all elements of this matrix to zero. |
Method | Description |
---|---|
{@link #plus(double)} | + *Add a scalar value. |
{@link #plusComplex(double, double)} | + *Add a complex scalar value. |
{@link #plus(ConstMatrix)} | + *Add another matrix. |
{@link #plus(double, ConstMatrix)} | + *Add another matrix, first applying the specified scale factor. |
{@link #minus(double)} | + *Subtract a scalar value. |
{@link #minusComplex(double, double)} | + *Subtract a complex scalar value. |
{@link #minus(ConstMatrix)} | + *Subtract another matrix. |
{@link #scale(double)} | + *Multiply by a scalar value. |
{@link #scaleComplex(double, double)} | + *Multiply by a complex scalar value. |
{@link #divide(double)} | + *Divided by a scalar value. |
{@link #mult(ConstMatrix)} | + *Multiply with another matrix. |
{@link #dot(ConstMatrix)} | + *Calculate the dot product with another vector. |
{@link #negative()} | + *Get the negative of each entry. |
{@link #real()} | + *Get the real component of each entry. |
{@link #imaginary()} | + *Get the imaginary component of each entry. |
{@link #magnitude()} | + *Get the imaginary component of each entry. |
{@link #transpose()} | + *Get the transpose. |
{@link #transposeConjugate()} | + *Get the conjugate transpose. |
{@link #equation(String, Object...)} | + *Perform an equation in place on the matrix. |
Method | Description |
---|---|
{@link #elementMult(ConstMatrix)} | + *Perform element by element multiplication with another matrix. |
{@link #elementDiv(ConstMatrix)} | + *Perform element by element division with another matrix. |
{@link #elementPower(double)} | + *Raise each entry to the specified power. |
{@link #elementPower(ConstMatrix)} | + *Raise each entry to the corresponding power in another matrix. |
{@link #elementExp()} | + *Compute the exponent of each entry. |
{@link #elementLog()} | + *Compute the logarithm of each entry. |
{@link #elementOp(SimpleOperations.ElementOpReal)} | + *Apply the specified real-valued function to each entry. |
{@link #elementOp(SimpleOperations.ElementOpComplex)} | + *Apply the specified complex-valued function to each entry. |
Method | Description |
---|---|
{@link #elementSum()} | + *Compute the sum of all elements of this matrix. |
{@link #elementSumComplex()} | + *Compute the sum of all elements of a complex matrix. |
{@link #elementMax()} | + *Compute the maximum of all elements of this matrix. |
{@link #elementMaxAbs()} | + *Compute the maximum absolute value of all elements of this matrix. |
{@link #elementMin()} | + *Compute the minimum of all elements of this matrix. |
{@link #elementMinAbs()} | + *Compute the minimum absolute value of all elements of this matrix. |
Method | Description |
---|---|
{@link #solve(ConstMatrix)} | + *Solve the equation {@code Ax = b}. |
{@link #conditionP2()} | + *Compute the matrix condition number. |
{@link #invert()} | + *Compute the matrix inverse. |
{@link #pseudoInverse()} | + *Compute the Moore-Penrose pseudo-inverse. |
{@link #determinant()} | + *Compute the determinant. |
{@link #determinantComplex()} | + *Compute the determinant of a complex matrix. |
{@link #trace()} | + *Compute the trace. |
{@link #traceComplex()} | + *Compute the trace of a complex matrix. |
{@link #normF()} | + *Compute the Frobenius norm. |
{@link #eig()} | + *Compute the eigenvalue decomposition. |
{@link #svd()} | + *Compute the singular value decomposition. |
{@link #svd(boolean)} | + *Compute the singular value decomposition in compact or full format. |
Method | Description |
---|---|
{@link #combine(int, int, ConstMatrix)} | + *Combine with another matrix. |
{@link #concatRows(ConstMatrix...)} | + *Concatenate vertically with one or more other matrices. |
{@link #concatColumns(ConstMatrix...)} | + *Concatenate horizontally with one or more other matrices. |
{@link #kron(ConstMatrix)} | + *Compute the Kronecker product with another matrix. |
Method | Description |
---|---|
{@link #getNumRows()} | + *Get the number of rows. |
{@link #getNumCols()} | + *Get the number of columns. |
{@link #bits()} | + *Get the size of the internal array elements (32 or 64). |
{@link #isVector()} | + *Check if this matrix is a vector. |
{@link #isIdentical(ConstMatrix, double)} | + *Check if this matrix is the same as another matrix, up to the specified tolerance. |
{@link #hasUncountable()} | + *Check if any of the matrix elements are NaN or infinite. |
Method | Description |
---|---|
{@link #convertToComplex()} | + *Convert to a complex matrix. |
{@link #convertToDense()} | + *Convert to a dense matrix. |
{@link #convertToSparse()} | + *Convert to a sparse matrix. |
{@link #reshape(int, int)} | + *Change the number of rows and columns. |
Method | Description |
---|---|
{@link #getType()} | + *Get the type of the wrapped matrix. |
{@link #getMatrix()} | + *Get the wrapped matrix. |
{@link #getDDRM()} | + *Get the wrapped matrix as a {@link DMatrixRMaj}. |
{@link #getFDRM()} | + *Get the wrapped matrix as a {@link FMatrixRMaj}. |
{@link #getZDRM()} | + *Get the wrapped matrix as a {@link ZMatrixRMaj}. |
{@link #getCDRM()} | + *Get the wrapped matrix as a {@link CMatrixRMaj}. |
{@link #getDSCC()} | + *Get the wrapped matrix as a {@link DMatrixSparseCSC}. |
{@link #getFSCC()} | + *Get the wrapped matrix as a {@link FMatrixSparseCSC}. |
Method | Description |
---|---|
{@link #loadCSV(String)} | + *Load a matrix from a CSV file. |
{@link #saveToFileCSV(String)} | + *Save this matrix to a CSV file. |
{@link #saveToMatrixMarket(String)} | + *Save this matrix in matrix market format. |
Method | Description |
---|---|
{@link #iterator(boolean, int, int, int, int)} | + *Create an iterator for traversing a submatrix. |
{@link #getIndex(int, int)} | + *Get the row-major index corresponding to {@code i,j}. |
{@link #isInBounds(int, int)} | + *Check if the indices {@code i,j} are in bounds. |
{@link #toString()} | + *Get the string representation of the matrix. |
{@link #toArray2()} | + *Convert the matrix to a 2D array of doubles. |
{@link #print()} | + *Print the matrix to standard out. |
{@link #print(String)} | + *Print the matrix to standard out using the specified floating point format. |
{@link #printDimensions()} | + *Print the number of rows and columns. |