/** * Returns the number of cells having non-zero values; ignores tolerance. */ public int cardinality() { int cardinality = 0; for (int row=rows; --row >= 0;) { for (int column=columns; --column >= 0;) { if (getQuick(row,column) != 0) cardinality++; } } return cardinality; } /**
/** * Returns the number of cells having non-zero values; ignores tolerance. */ public int cardinality() { int cardinality = 0; for (int row=rows; --row >= 0;) { for (int column=columns; --column >= 0;) { if (getQuick(row,column) != 0) cardinality++; } } return cardinality; } /**
/** * Returns the matrix cell value at coordinate <tt>[row,column]</tt>. * * @param row the index of the row-coordinate. * @param column the index of the column-coordinate. * @return the value of the specified cell. * @throws IndexOutOfBoundsException if <tt>column<0 || column>=columns() || row<0 || row>=rows()</tt> */ public double get(int row, int column) { if (column<0 || column>=columns || row<0 || row>=rows) throw new IndexOutOfBoundsException("row:"+row+", column:"+column); return getQuick(row,column); } /**
@Override public double apply(int r, int c, double AAColrc) { if (c < rowHolder[0] + 1) { //log.debug("sum " + AAColrc + "*" + HH.getQuick(colHolder[0], colHolder[0]) + " to AHAT(" + r + "," + rowHolder[0] + ")"); ret.setQuick(r, rowHolder[0], ret.getQuick(r, rowHolder[0]) + valueHolder[0] * AAColrc * HH.getQuick(colHolder[0], colHolder[0])); } return AAColrc; } };
public boolean apply(int key, double value) { int i = key/columns; int j = key%columns; double r = value * y.getQuick(i,j); if (r!=value) elements.put(key,r); return true; } }
public boolean apply(int key, double value) { int i = key/columns; int j = key%columns; double r = value / y.getQuick(i,j); if (r!=value) elements.put(key,r); return true; } }
public boolean apply(int key, double value) { int i = key/columns; int j = key%columns; double r = value * y.getQuick(i,j); if (r!=value) elements.put(key,r); return true; } }
public boolean apply(int key, double value) { int i = key/columns; int j = key%columns; double r = value / y.getQuick(i,j); if (r!=value) elements.put(key,r); return true; } }
@Override public double apply(int i, int j, double Hij) { if (i + 1 > j) { // the subdiagonal elements HAugm.setQuick(i, j, Hij + HAugm.getQuick(i, j)); } return Hij; } });
/** * Returns the sum of the diagonal elements of matrix <tt>A</tt>; <tt>Sum(A[i,i])</tt>. */ public double trace(DoubleMatrix2D A) { double sum = 0; for (int i=Math.min(A.rows(),A.columns()); --i >= 0;) { sum += A.getQuick(i,i); } return sum; } /**
/** * Returns the sum of the diagonal elements of matrix <tt>A</tt>; <tt>Sum(A[i,i])</tt>. */ public double trace(DoubleMatrix2D A) { double sum = 0; for (int i=Math.min(A.rows(),A.columns()); --i >= 0;) { sum += A.getQuick(i,i); } return sum; } /**
public double apply(int i, int j, double value) { setQuick(i,j,getQuick(i,j) * y.getQuick(i,j)); return value; } }
public double apply(int i, int j, double value) { setQuick(i,j,getQuick(i,j) * y.getQuick(i,j)); return value; } }
public double apply(int i, int j, double value) { setQuick(i,j,getQuick(i,j) / y.getQuick(i,j)); return value; } }
public double apply(int i, int j, double value) { setQuick(i,j,getQuick(i,j) / y.getQuick(i,j)); return value; } }
private DoubleMatrix2D decompPCA (SingularValueDecomposition svd) { DoubleMatrix2D D = svd.getS (); // Calculer la racine carree des valeurs propres for (int i = 0; i < D.rows(); ++i) { lambda[i] = D.getQuick (i, i); D.setQuick (i, i, Math.sqrt (D.getQuick (i, i))); } DoubleMatrix2D P = svd.getV(); return P.zMult (D, null); }
public void apply(cern.colt.Timer timer) { int rows=B.rows(); int columns=B.columns(); //for (int row=rows; --row >= 0; ) { // for (int column=columns; --column >= 0; ) { for (int row=0; row < rows; row++) { for (int column=0; column < columns; column++) { A.setQuick(row,column, B.getQuick(row,column)); } } } };
public void apply(cern.colt.Timer timer) { int rows=B.rows(); int columns=B.columns(); //for (int row=rows; --row >= 0; ) { // for (int column=columns; --column >= 0; ) { for (int row=0; row < rows; row++) { for (int column=0; column < columns; column++) { A.setQuick(row,column, B.getQuick(row,column)); } } } };