/** * {@inheritDoc} */ public void set(int row, int col, double val) { m.set(col, row, val); }
/** * {@inheritDoc} */ public void set(int row, int col, double val) { m.set(col, row, val); }
/** * {@inheritDoc} */ public void set(int row, int col, double val) { backingMatrix.set(getRealRow(row), col, val); }
/** * {@inheritDoc} */ public synchronized double getAndAdd(int row, int col, double delta) { double value = m.get(row, col); m.set(row, col, value + delta); return value; }
/** * {@inheritDoc} */ public synchronized double addAndGet(int row, int col, double delta) { double value = m.get(row, col) + delta; m.set(row, col, value); return value; }
/** * Initializes every value in {@code m} to be a random value between 0 and * 1, inclusive. */ public static void initialize(Matrix m) { for (int r = 0; r < m.rows(); ++r) for (int c = 0; c < m.columns(); ++c) m.set(r,c,Math.random()); } }
/** * Initializes every value in {@code m} to be a random value between 0 and * 1, inclusive. */ public static void initialize(Matrix m) { for (int r = 0; r < m.rows(); ++r) for (int c = 0; c < m.columns(); ++c) m.set(r,c,Math.random()); } }
/** * Initializes every value in {@code m} to be a random value between 0 and * 1, inclusive. */ public static void initialize(Matrix m) { for (int r = 0; r < m.rows(); ++r) for (int c = 0; c < m.columns(); ++c) m.set(r,c,Math.random()); }
/** * {@inheritDoc} */ public void set(int row, int col, double val) { row = getIndexFromMap(rowMaskMap, row); col = getIndexFromMap(colMaskMap, col); matrix.set(row, col, val); }
/** * {@inheritDoc} */ public void setColumn(int column, double[] values) { column = getIndexFromMap(colMaskMap, column); for (int r = 0; r < rows(); ++r) matrix.set(getIndexFromMap(rowMaskMap, r), column, values[r]); }
/** * {@inheritDoc} */ public void setRow(int row, double[] columns) { row = getIndexFromMap(rowMaskMap, row); for (int c = 0; c < columns(); ++c) matrix.set(row, getIndexFromMap(colMaskMap, c), columns[c]); }
/** * Sets any negative values of {@code m} to zero. */ public static void makeNonZero(Matrix m) { for (int r = 0; r < m.rows(); ++r) for (int c = 0; c < m.columns(); ++c) if (m.get(r,c) < 0d) m.set(r,c,0); }
/** * Sets any negative values of {@code m} to zero. */ public static void makeNonZero(Matrix m) { for (int r = 0; r < m.rows(); ++r) for (int c = 0; c < m.columns(); ++c) if (m.get(r,c) < 0d) m.set(r,c,0); }
/** * {@inheritDoc} */ public void setColumn(int column, DoubleVector values) { column = getIndexFromMap(colMaskMap, column); for (int r = 0; r < rows(); ++r) matrix.set(getIndexFromMap(rowMaskMap, r), column, values.get(r)); }
/** * {@inheritDoc} */ public void setRow(int row, DoubleVector values) { row = getIndexFromMap(rowMaskMap, row); for (int c = 0; c < columns(); ++c) matrix.set(row, getIndexFromMap(colMaskMap, c), values.get(c)); } }
private static Matrix multiplyBothDiag(Matrix m1, Matrix m2) { Matrix resultMatrix = new DiagonalMatrix(m1.rows()); for (int i = 0; i < m1.rows(); ++i) resultMatrix.set(i, i, m1.get(i, i) * m2.get(i, i)); return resultMatrix; }
/** * Updates the values in {@code X} based on the difference found in {@code * G} with each value scaled by the {@code learningRate}. */ private void updateX(Matrix G, double[] learningRate) { for (int k = 0; k < X.rows(); ++k) for (int c = 0; c < X.columns(); ++c) X.set(k, c, X.get(k, c) - learningRate[k] * G.get(k, c)); makeNonZero(X); }
private static Matrix multiplyLeftDiag(Matrix m1, Matrix m2) { Matrix resultMatrix = create(m1.rows(), m2.columns(), true); for (int r = 0; r < m1.rows(); ++r) { double element = m1.get(r, r); double[] m2Row = m2.getRow(r); for (int c = 0; c < m2.columns(); ++c) resultMatrix.set(r, c, element * m2Row[c]); } return resultMatrix; }
private static Matrix multiplyRightDiag(Matrix m1, Matrix m2) { Matrix resultMatrix = create(m1.rows(), m2.columns(), true); for (int r = 0; r < m1.rows(); ++r) { double[] row = m1.getRow(r); for (int c = 0; c < m2.columns(); ++c) { double value = m2.get(c, c); resultMatrix.set(r, c, value * row[c]); } } return resultMatrix; }
private static Matrix multiplyRightDiag(Matrix m1, Matrix m2) { Matrix resultMatrix = create(m1.rows(), m2.columns(), true); for (int r = 0; r < m1.rows(); ++r) { double[] row = m1.getRow(r); for (int c = 0; c < m2.columns(); ++c) { double value = m2.get(c, c); resultMatrix.set(r, c, value * row[c]); } } return resultMatrix; }