@Override public double getQuick(int index) { Vector v = rowToColumn ? matrix.viewColumn(index) : matrix.viewRow(index); return v == null ? 0.0 : v.getQuick(transposeOffset); }
@Override public boolean isAddConstantTime() { return (rowToColumn ? matrix.viewColumn(0) : matrix.viewRow(0)).isAddConstantTime(); } }
@Override public double getLookupCost() { return (rowToColumn ? matrix.viewColumn(0) : matrix.viewRow(0)).getLookupCost(); }
@Override public double getIteratorAdvanceCost() { return (rowToColumn ? matrix.viewColumn(0) : matrix.viewRow(0)).getIteratorAdvanceCost(); }
@Test(expected = IndexException.class) public void testViewRowIndexOver() { test.viewRow(5); }
@Test(expected = IndexException.class) public void testViewRowIndexUnder() { test.viewRow(-1); }
@Test(expected = IndexException.class) public void testViewRowIndexOver() { test.viewRow(5); }
@Test(expected = IndexException.class) public void testViewRowIndexUnder() { test.viewRow(-1); }
@Override public Matrix timesRight(Matrix that) { if (that.numRows() != diagonal.size()) { throw new IllegalArgumentException("Incompatible number of rows in the right operand of matrix multiplication."); } Matrix m = that.like(); for (int row = 0; row < diagonal.size(); row++) { m.assignRow(row, that.viewRow(row).times(diagonal.getQuick(row))); } return m; }
@Override public Vector viewRow(int row) { if (row < 0 || row >= rowSize()) { throw new IndexException(row, rowSize()); } return matrix.viewRow(row + offset[ROW]).viewPart(offset[COL], columnSize()); }
@Override public void setQuick(int index, double value) { Vector v = rowToColumn ? matrix.viewColumn(index) : matrix.viewRow(index); if (v == null) { v = newVector(numCols); if (rowToColumn) { matrix.assignColumn(index, v); } else { matrix.assignRow(index, v); } } v.setQuick(transposeOffset, value); }
public static void assertEigen(Matrix eigens, VectorIterable corpus, int numEigensToCheck, double errorMargin, boolean isSymmetric) { for (int i = 0; i < numEigensToCheck; i++) { Vector e = eigens.viewRow(i); assertEigen(i, e, corpus, errorMargin, isSymmetric); } }
@Test public void testViewRow() { Vector row = test.viewRow(1); assertEquals("row size", 2, row.getNumNondefaultElements()); }
@Test public void testViewRow() { Vector row = test.viewRow(1); assertEquals("row size", 2, row.getNumNondefaultElements()); //create a matrix with an unassigned row 0 Matrix matrix = new SparseMatrix(1, 1); Vector view = matrix.viewRow(0); final double value = 1.23; view.assign(value); //test whether the update in the view is reflected in the matrix assertEquals("Matrix value", view.getQuick(0), matrix.getQuick(0, 0), EPSILON); }
private OpenIntObjectHashMap<Vector> asRowVectors(Matrix matrix) { OpenIntObjectHashMap<Vector> rows = new OpenIntObjectHashMap<>(); for (int row = 0; row < matrix.numRows(); row++) { rows.put(row, matrix.viewRow(row).clone()); } return rows; }
@Test public void testIterate() { Iterator<MatrixSlice> it = test.iterator(); MatrixSlice m; while (it.hasNext() && (m = it.next()) != null) { Vector v = m.vector(); Vector w = test instanceof SparseColumnMatrix ? test.viewColumn(m.index()) : test.viewRow(m.index()); assertEquals("iterator: " + v + ", randomAccess: " + w, v, w); } }
public static Vector mult(Matrix m, Vector v) { if (m.numRows() != v.size()) { throw new CardinalityException(m.numRows(), v.size()); } // Use a Dense Vector for the moment, Vector result = new DenseVector(m.numRows()); for (int i = 0; i < m.numRows(); i++) { result.set(i, m.viewRow(i).dot(v)); } return result; }
@Test public void testAggregateRows() { Vector v = test.aggregateRows(new VectorFunction() { @Override public double apply(Vector v) { return v.zSum(); } }); for (int i = 0; i < test.numRows(); i++) { assertEquals(test.viewRow(i).zSum(), v.get(i), EPSILON); } }
@Test public void testViewDenseSparseReporting() { Matrix m = new SparseMatrix(1000, 1000); m.set(1, 1, 33.0); Matrix mt = Matrices.transposedView(m); assertTrue(mt.viewColumn(0).isDense() == m.viewRow(0).isDense()); assertTrue(mt.viewRow(0).isDense() == m.viewColumn(0).isDense()); m = new DenseMatrix(10,10); m.set(1, 1, 33.0); mt = Matrices.transposedView(m); assertTrue(mt.viewColumn(0).isDense()); assertTrue(mt.viewRow(0).isDense()); }