private void runEVD() { int gramDimension = symmGramMatrix.numRows(); try { symmDenseEVD = no.uib.cipr.matrix.SymmDenseEVD.factorize(this.symmGramMatrix); } catch (NotConvergedException e) { throw new RuntimeException(e); } // initial eigenpairs eigenvalues = symmDenseEVD.getEigenvalues(); double[] Vt_1D = symmDenseEVD.getEigenvectors().getData(); eigenvectors = LinearAlgebraUtils.reshape1DArray(Vt_1D, 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)); } }
@Override public long process(BenchmarkMatrix[] inputs, BenchmarkMatrix[] outputs, long numTrials) { DenseMatrix matA = inputs[0].getOriginal(); DenseMatrix V = null; double []D = null; long prev = System.nanoTime(); for( long i = 0; i < numTrials; i++ ) { try { // the input matrix is over written SymmDenseEVD e = SymmDenseEVD.factorize(matA); V = e.getEigenvectors(); D = e.getEigenvalues(); } catch (NotConvergedException e) { throw new RuntimeException(e); } } long elapsedTime = System.nanoTime()-prev; if( outputs != null ) { outputs[0] = new RowMajorBenchmarkMatrix(RowMajorOps.diag(D)); outputs[1] = new MtjBenchmarkMatrix(V); } return elapsedTime; } }
private void runEVD() { int gramDimension = symmGramMatrix.numRows(); try { symmDenseEVD = no.uib.cipr.matrix.SymmDenseEVD.factorize(this.symmGramMatrix); } catch (NotConvergedException e) { throw new RuntimeException(e); } // initial eigenpairs eigenvalues = symmDenseEVD.getEigenvalues(); double[] Vt_1D = symmDenseEVD.getEigenvectors().getData(); eigenvectors = LinearAlgebraUtils.reshape1DArray(Vt_1D, 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)); } }
Matrix evCw = evdCw.getEigenvectors(); double[] evs = evdCw.getEigenvalues(); System.err.println("Eigenvectors of symmetric matrix :\n" + evd.getEigenvectors()); System.err.println("Eigenvalues of symmetric matrix :\n" + Utils.arrayToString(evd.getEigenvalues()) + "\n"); cols[index++] = indices.get(i); int[] rows = new int[evd.getEigenvectors().numRows()]; for (int i = 0; i < rows.length; i++) { rows[i] = i; Matrix reducedMatrix = Matrices.getSubMatrix(evd.getEigenvectors(), rows, cols);
m_Eigenvectors = Matrices.getArray(evd.getEigenvectors()); m_Eigenvalues = evd.getEigenvalues();
m_Eigenvectors = Matrices.getArray(evd.getEigenvectors()); m_Eigenvalues = evd.getEigenvalues();
m_eigenvectors = Matrices.getArray(evd.getEigenvectors()); m_eigenvalues = evd.getEigenvalues();
m_eigenvectors = Matrices.getArray(evd.getEigenvectors()); m_eigenvalues = evd.getEigenvalues();