/** * {@inheritDoc} */ public double[] getRow(int row) { double[] arr = new double[columns]; for (int i = 0; i < columnToReal.length; ++i) arr[i] = backingMatrix.get(row, columnToReal[i]); return arr; }
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; }
/** * {@inheritDoc} */ public double get(int row, int col) { return m.get(col, row); }
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; }
/** * {@inheritDoc} */ public double[] getColumn(int column) { double[] col = new double[rows]; for (int i = 0; i < rowToReal.length; ++i) col[i] = backingMatrix.get(rowToReal[i], column); return col; }
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; }
/** * {@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; }
/** * {@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; }
/** * {@inheritDoc} */ public double get(int row, int col) { return backingMatrix.get(getRealRow(row), col); }
/** * {@inheritDoc} */ public double get(int row, int col) { return backingMatrix.get(row, getRealColumn(col)); }
/** * {@inheritDoc} */ public double get(int row, int col) { return backingMatrix.get(getRealRow(row), col); }
/** * 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); }
/** * 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); }
/** * Updates the values in {@code A} based on the difference found in {@code * G} with each value scaled by the {@code learningRate}. */ private void updateA(Matrix G, double[] learningRate) { for (int r = 0; r < A.rows(); ++r) for (int k = 0; k < A.columns(); ++k) A.set(r, k, A.get(r, k) - learningRate[k] * G.get(r, k)); makeNonZero(A); }
/** * 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 double[] getColumn(int column) { column = getIndexFromMap(colMaskMap, column); double[] values = new double[rows()]; for (int r = 0; r < rows(); ++r) values[r] = matrix.get(getIndexFromMap(rowMaskMap, r), column); return values; }
/** * {@inheritDoc} */ public double[] getColumn(int column) { column = getIndexFromMap(colMaskMap, column); double[] values = new double[rows()]; for (int r = 0; r < rows(); ++r) values[r] = matrix.get(getIndexFromMap(rowMaskMap, r), column); return values; }