public DoubleMatrix2D reshape(int rows, int columns) { if (rows * columns != size) { throw new IllegalArgumentException("rows*columns != size"); } DoubleMatrix2D M = new DenseDoubleMatrix2D(rows, columns); final double[] elementsOther = (double[]) M.elements(); final int zeroOther = (int) M.index(0, 0); final int rowStrideOther = M.rowStride(); final int colStrideOther = M.columnStride(); int idxOther; int idx = 0; for (int c = 0; c < columns; c++) { idxOther = zeroOther + c * colStrideOther; for (int r = 0; r < rows; r++) { elementsOther[idxOther] = getQuick(idx++); idxOther += rowStrideOther; } } return M; }
public DoubleMatrix2D reshape(int rows, int columns) { if (rows * columns != size) { throw new IllegalArgumentException("rows*columns != size"); } DoubleMatrix2D M = new DenseDoubleMatrix2D(rows, columns); final double[] elementsOther = (double[]) M.elements(); final int zeroOther = (int) M.index(0, 0); final int rowStrideOther = M.rowStride(); final int colStrideOther = M.columnStride(); int idxOther; int idx = 0; for (int c = 0; c < columns; c++) { idxOther = zeroOther + c * colStrideOther; for (int r = 0; r < rows; r++) { elementsOther[idxOther] = getQuick(idx++); idxOther += rowStrideOther; } } return M; }
public DoubleMatrix3D reshape(int slices, int rows, int columns) { if (slices * rows * columns != size) { throw new IllegalArgumentException("slices*rows*columns != size"); } DoubleMatrix3D M = new DenseDoubleMatrix3D(slices, rows, columns); final double[] elementsOther = (double[]) M.elements(); final int zeroOther = (int) M.index(0, 0, 0); final int sliceStrideOther = M.sliceStride(); final int rowStrideOther = M.rowStride(); final int colStrideOther = M.columnStride(); int idxOther; int idx = 0; for (int s = 0; s < slices; s++) { for (int c = 0; c < columns; c++) { idxOther = zeroOther + s * sliceStrideOther + c * colStrideOther; for (int r = 0; r < rows; r++) { elementsOther[idxOther] = getQuick(idx++); idxOther += rowStrideOther; } } } return M; }
public DoubleMatrix3D reshape(int slices, int rows, int columns) { if (slices * rows * columns != size) { throw new IllegalArgumentException("slices*rows*columns != size"); } DoubleMatrix3D M = new DenseDoubleMatrix3D(slices, rows, columns); final double[] elementsOther = (double[]) M.elements(); final int zeroOther = (int) M.index(0, 0, 0); final int sliceStrideOther = M.sliceStride(); final int rowStrideOther = M.rowStride(); final int colStrideOther = M.columnStride(); int idxOther; int idx = 0; for (int s = 0; s < slices; s++) { for (int c = 0; c < columns; c++) { idxOther = zeroOther + s * sliceStrideOther + c * colStrideOther; for (int r = 0; r < rows; r++) { elementsOther[idxOther] = getQuick(idx++); idxOther += rowStrideOther; } } } return M; }