private void runSVD() { int gramDimension = gramMatrix.numRows(); try { svd = new no.uib.cipr.matrix.SVD(gramDimension, gramDimension).factor(gramMatrix); } catch (NotConvergedException e) { throw new RuntimeException(e); } double[] Vt_1D = svd.getVt().getData(); rightEigenvectors = LinearAlgebraUtils.reshape1DArray(Vt_1D, gramDimension, gramDimension); } }
private void runEVD() { int gramDimension = gramMatrix.numRows(); try { evd = no.uib.cipr.matrix.EVD.factorize(gramMatrix); } catch (NotConvergedException e) { throw new RuntimeException(e); } // initial eigenpairs eigenvalues = evd.getRealEigenvalues(); Matrix eigenvectorMatrix = evd.getRightEigenvectors(); eigenvectors = LinearAlgebraUtils.reshape1DArray(((DenseMatrix) eigenvectorMatrix).getData(), gramDimension, gramDimension); // sort eigenpairs in descending order according to the magnitude of eigenvalues EigenPair[] eigenPairs = LinearAlgebraUtils.createReverseSortedEigenpairs(eigenvalues, eigenvectors); eigenvalues = LinearAlgebraUtils.extractEigenvaluesFromEigenpairs(eigenPairs); eigenvectors = ArrayUtils.transpose(LinearAlgebraUtils.extractEigenvectorsFromEigenpairs(eigenPairs)); }
public void setDouble(double value, int row, int column) { matrix.getData()[(row + column * matrix.numRows())] = value; }
public MTJDenseDoubleMatrix2D(DenseMatrix m) { super(m.numRows(), m.numColumns()); this.matrix = m; }
public void setDouble(double value, long row, long column) { matrix.getData()[(int) (row + column * matrix.numRows())] = value; }
public MTJDenseDoubleMatrix2D(DenseMatrix m) { super(m.numRows(), m.numColumns()); this.matrix = m; }
public double getDouble(long row, long column) { return matrix.getData()[(int) (row + column * matrix.numRows())]; }
public double getDouble(int row, int column) { return matrix.getData()[(row + column * matrix.numRows())]; }
private DenseMatrix solve(DenseMatrix B, Transpose trans) throws MatrixSingularException { if (singular) throw new MatrixSingularException(); if (B.numRows() != LU.numRows()) throw new IllegalArgumentException("B.numRows() != LU.numRows()"); intW info = new intW(0); LAPACK.getInstance().dgetrs(trans.netlib(), LU.numRows(), B.numColumns(), LU.getData(), Matrices.ld(LU.numRows()), piv, B.getData(), Matrices.ld(LU.numRows()), info); if (info.val < 0) throw new IllegalArgumentException(); return B; }
private DenseMatrix solve(DenseMatrix B, Transpose trans) throws MatrixSingularException { if (singular) throw new MatrixSingularException(); if (B.numRows() != LU.numRows()) throw new IllegalArgumentException("B.numRows() != LU.numRows()"); intW info = new intW(0); LAPACK.getInstance().dgetrs(trans.netlib(), LU.numRows(), B.numColumns(), LU.getData(), Matrices.ld(LU.numRows()), piv, B.getData(), Matrices.ld(LU.numRows()), info); if (info.val < 0) throw new IllegalArgumentException(); return B; }
/** * Convert a {@link DenseMatrix} to a {@link Matrix}. * * @param mjt * {@link DenseMatrix} to convert * @return converted matrix. */ public static Matrix convert(DenseMatrix mjt) { return convert(mjt, mjt.numRows(), mjt.numColumns()); }
private final static int sygvd(int itype, String jobz, String uplo, DenseMatrix A, DenseMatrix B, DenseVector W) { int info = dsygvd(itype, jobz, uplo, A.numColumns(), A.getData(), A.numRows(), B.getData(), B.numRows(), W.getData()); if (info == 0) { return 0; } else { if (info < 0) throw new IllegalArgumentException("LAPACK ERROR: DSYGVD returned " + info); throw new RuntimeException("LAPACK ERROR: DSYGVD returned " + info); } }
private void runSVD() { int gramDimension = gramMatrix.numRows(); try { svd = new no.uib.cipr.matrix.SVD(gramDimension, gramDimension).factor(gramMatrix); } catch (NotConvergedException e) { throw new RuntimeException(e); } double[] Vt_1D = svd.getVt().getData(); rightEigenvectors = LinearAlgebraUtils.reshape1DArray(Vt_1D, gramDimension, gramDimension); } }
public Matrix invSPD() { DenseCholesky chol = DenseCholesky.factorize(getWrappedObject()); return new MTJDenseDoubleMatrix2D(chol.solve(Matrices.identity(matrix.numRows()))); }
public Matrix invSPD() { DenseCholesky chol = DenseCholesky.factorize(getWrappedObject()); return new MTJDenseDoubleMatrix2D(chol.solve(Matrices.identity(matrix.numRows()))); }
public Matrix transAmult(Matrix B, DenseMatrix C) { if (pivots == null) return super.transAmult(B, C); checkTransAmultAdd(B, C); C.set(B); LAPACK.getInstance().dlaswp(C.numColumns(), C.getData(), Matrices.ld(C.numRows()), 1, pivots.length, pivots, transposed ? 1 : -1); return C; }
public Matrix mult(Matrix B, DenseMatrix C) { if (pivots == null) return super.mult(B, C); checkMultAdd(B, C); C.set(B); LAPACK.getInstance().dlaswp(C.numColumns(), C.getData(), Matrices.ld(C.numRows()), 1, pivots.length, pivots, transposed ? -1 : 1); return C; }
public Matrix transAmult(Matrix B, DenseMatrix C) { if (pivots == null) return super.transAmult(B, C); checkTransAmultAdd(B, C); C.set(B); LAPACK.getInstance().dlaswp(C.numColumns(), C.getData(), Matrices.ld(C.numRows()), 1, pivots.length, pivots, transposed ? 1 : -1); return C; }
public Matrix mult(Matrix B, DenseMatrix C) { if (pivots == null) return super.mult(B, C); checkMultAdd(B, C); C.set(B); LAPACK.getInstance().dlaswp(C.numColumns(), C.getData(), Matrices.ld(C.numRows()), 1, pivots.length, pivots, transposed ? -1 : 1); return C; }
private void estimate_internal(Matrix y, Matrix x) { try { final no.uib.cipr.matrix.DenseMatrix mjtX = new no.uib.cipr.matrix.DenseMatrix(x.getArray()); no.uib.cipr.matrix.SVD svd; svd = no.uib.cipr.matrix.SVD.factorize(mjtX); final Matrix u = MatrixUtils.convert(svd.getU(), svd.getU().numRows(), svd.getS().length); final Matrix v = MatrixUtils.convert(svd.getVt(), svd.getS().length, svd.getVt().numColumns()).transpose(); final Matrix d = MatrixUtils.diag(svd.getS()); weights = v.times(MatrixUtils.pseudoInverse(d)).times(u.transpose()).times(y); } catch (final NotConvergedException e) { throw new RuntimeException(e.getMessage()); } }