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)); }
EVD mtjEVD = new EVD( matrix.getNumRows(), leftEVD, rightEVD ); try mtjEVD.factor( new no.uib.cipr.matrix.DenseMatrix( matrix.getInternalMatrix() ) ); matrixFactory.createWrapper( mtjEVD.getRightEigenvectors() ); matrixFactory.createMatrix( numEigenValues, numEigenValues ); double[] realEigenValues = mtjEVD.getRealEigenvalues(); double[] imaginaryEigenValues = mtjEVD.getImaginaryEigenvalues();
private boolean isPosDef (Matrix variance) { try { EVD evd = EVD.factorize (variance); double[] vals = evd.getRealEigenvalues (); return vals[vals.length - 1] > 0; } catch (NotConvergedException e) { throw new RuntimeException (e); } }
/** * Convenience method for computing the complete eigenvalue decomposition of * the given matrix * * @param A * Matrix to factorize. Not modified * @return Newly allocated decomposition * @throws NotConvergedException */ public static EVD factorize(Matrix A) throws NotConvergedException { return new EVD(A.numRows()).factor(new DenseMatrix(A)); }
EVD mtjEVD = new EVD( matrix.getNumRows(), leftEVD, rightEVD ); try mtjEVD.factor( new no.uib.cipr.matrix.DenseMatrix( matrix.getInternalMatrix() ) ); matrixFactory.createWrapper( mtjEVD.getRightEigenvectors() ); matrixFactory.createMatrix( numEigenValues, numEigenValues ); double[] realEigenValues = mtjEVD.getRealEigenvalues(); double[] imaginaryEigenValues = mtjEVD.getImaginaryEigenvalues();
private boolean isPosDef (Matrix variance) { try { EVD evd = EVD.factorize (variance); double[] vals = evd.getRealEigenvalues (); return vals[vals.length - 1] > 0; } catch (NotConvergedException e) { throw new RuntimeException (e); } }
/** * Convenience method for computing the complete eigenvalue decomposition of * the given matrix * * @param A * Matrix to factorize. Not modified * @return Newly allocated decomposition * @throws NotConvergedException */ public static EVD factorize(Matrix A) throws NotConvergedException { return new EVD(A.numRows()).factor(new DenseMatrix(A)); }
public Matrix[] eig() { try { EVD evd = EVD.factorize(getWrappedObject()); Matrix v = new MTJDenseDoubleMatrix2D(evd.getRightEigenvectors()); int m = (int) getRowCount(); double[] evds = evd.getRealEigenvalues(); Matrix d = new MTJDenseDoubleMatrix2D(m, m); for (int i = 0; i < m; i++) { d.setAsDouble(evds[i], i, i); } return new Matrix[] { v, d }; } catch (Exception e) { throw new RuntimeException(e); } }
EVD mtjEVD = new EVD( matrix.getNumRows(), leftEVD, rightEVD ); try mtjEVD.factor( new no.uib.cipr.matrix.DenseMatrix( matrix.getInternalMatrix() ) ); matrixFactory.createWrapper( mtjEVD.getRightEigenvectors() ); matrixFactory.createMatrix( numEigenValues, numEigenValues ); double[] realEigenValues = mtjEVD.getRealEigenvalues(); double[] imaginaryEigenValues = mtjEVD.getImaginaryEigenvalues();
private boolean isPosDef (Matrix variance) { try { EVD evd = EVD.factorize (variance); double[] vals = evd.getRealEigenvalues (); return vals[vals.length - 1] > 0; } catch (NotConvergedException e) { throw new RuntimeException (e); } }
public Matrix[] eig() { try { EVD evd = EVD.factorize(getWrappedObject()); Matrix v = new MTJDenseDoubleMatrix2D(evd.getRightEigenvectors()); int m = (int) getRowCount(); double[] evds = evd.getRealEigenvalues(); Matrix d = new MTJDenseDoubleMatrix2D(m, m); for (int i = 0; i < m; i++) { d.setAsDouble(evds[i], i, i); } return new Matrix[] { v, d }; } catch (Exception e) { throw new RuntimeException(e); } }
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)); }