/** * Constructs a matrix with the same size as <tt>realPart</tt> matrix and * fills the real part of this matrix with elements of <tt>realPart</tt>. * * @param realPart * a real matrix whose elements become a real part of this matrix * @throws IllegalArgumentException * if <tt>(double)slices*columns*rows > Integer.MAX_VALUE</tt>. * @throws IllegalArgumentException * if <tt>slices<0 || rows<0 || columns<0</tt>. */ public DenseDComplexMatrix3D(DoubleMatrix3D realPart) { this(realPart.slices(), realPart.rows(), realPart.columns()); assignReal(realPart); }
public synchronized double get(int slice, int row, int column) { return content.get(column, row, slice); }
checkColumn(column); int sliceRows = this.slices; int sliceColumns = this.rows; int sliceColumnZero = rowZero + _columnOffset(_columnRank(column)); return like2D(sliceRows, sliceColumns, sliceRowZero, sliceColumnZero, sliceRowStride, sliceColumnStride);
checkSlice(slice); int sliceRows = this.rows; int sliceColumns = this.columns; int sliceColumnZero = columnZero + _sliceOffset(_sliceRank(slice)); return like2D(sliceRows, sliceColumns, sliceRowZero, sliceColumnZero, sliceRowStride, sliceColumnStride);
if (row < 0 || row >= matrix.rows()) throw new IndexOutOfBoundsException("row=" + row + ", matrix=" + AbstractFormatter.shape(matrix)); if (column < 0 || column >= matrix.columns()) throw new IndexOutOfBoundsException("column=" + column + ", matrix=" + AbstractFormatter.shape(matrix)); int[] sliceIndexes = new int[matrix.slices()]; // indexes to reorder sliceIndexes[i] = i; final DoubleMatrix1D sliceView = matrix.viewRow(row).viewColumn(column); IntComparator comp = new IntComparator() { public int compare(int a, int b) { return matrix.viewSelection(sliceIndexes, null, null);
if (!(A != null && B != null)) return false; final int slices = A.slices(); final int rows = A.rows(); final int columns = A.columns(); if (columns != B.columns() || rows != B.rows() || slices != B.slices()) return false; boolean result = false; final double epsilon = tolerance(); int nthreads = ConcurrencyUtils.getNumberOfThreads(); if ((nthreads > 1) && (A.size() >= ConcurrencyUtils.getThreadsBeginN_3D())) { nthreads = Math.min(nthreads, slices); Future<?>[] futures = new Future[nthreads]; for (int r = 0; r < rows; r++) { for (int c = 0; c < columns; c++) { double x = A.getQuick(s, r, c); double value = B.getQuick(s, r, c); double diff = Math.abs(value - x); if ((diff != diff) && ((value != value && x != x) || value == x))
checkSliceIndexes(sliceIndexes); checkRowIndexes(rowIndexes); checkColumnIndexes(columnIndexes); sliceOffsets[i] = _sliceOffset(_sliceRank(sliceIndexes[i])); rowOffsets[i] = _rowOffset(_rowRank(rowIndexes[i])); columnOffsets[i] = _columnOffset(_columnRank(columnIndexes[i])); return viewSelectionLike(sliceOffsets, rowOffsets, columnOffsets);
if (values.length != slices * rows * columns) throw new IllegalArgumentException("Must have same length: length=" + values.length + "slices()*rows()*columns()=" + slices() * rows() * columns()); int nthreads = ConcurrencyUtils.getNumberOfThreads(); if ((nthreads > 1) && (slices * rows * columns >= ConcurrencyUtils.getThreadsBeginN_3D())) { for (int r = 0; r < rows; r++) { for (int c = 0; c < columns; c++) { setQuick(s, r, c, values[idx++]);
if (X.isView() == true || !(X instanceof DenseDoubleMatrix3D)) { final int slices = X.slices(); final int rows = X.rows(); final int columns = X.columns(); double sum = 0; int nthreads = ConcurrencyUtils.getNumberOfThreads(); for (int r = 0; r < rows; r++) { for (int c = 0; c < columns; c++) { elem = X.getQuick(s, r, c); sum += (elem * elem);
if (x_tde.viewSlice(t).zSum() > 1e-3) throw new RuntimeException ("x_tde.viewSlice(t): " + x_tde.viewSlice(t) + ", x_tde rows: " + x_tde.rows() + ", cols: " + x_tde.columns() + ", slices: " + x_tde.slices()); double wasteCollected = 0; for (int e = 0; e < E ; e ++) wasteCollected += w_te.get(t, e) * netPlan.getLink(e).getAttributeAsDouble(ATTNAME_CONTAINERCAPACITY_KG, 0.0);
if (matrix.size() == 0) return "Empty matrix"; StringBuffer buf = new StringBuffer(); for (int i = 0; i < matrix.slices(); i++) { if (i != 0) buf.append(sliceSeparator); buf.append(toTitleString(matrix.viewSlice(i), rowNames, columnNames, rowAxisName, columnAxisName, title + "\n" + sliceAxisName + "=" + sliceNames[i]));
public void run() { for (int s = firstSlice; s < lastSlice; s++) { double[][] currentSlice = values[s]; if (currentSlice.length != rows) throw new IllegalArgumentException( "Must have same number of rows in every slice: rows=" + currentSlice.length + "rows()=" + rows()); for (int r = 0; r < rows; r++) { double[] currentRow = currentSlice[r]; if (currentRow.length != columns) throw new IllegalArgumentException( "Must have same number of columns in every row: columns=" + currentRow.length + "columns()=" + columns()); for (int c = 0; c < columns; c++) { setQuick(s, r, c, currentRow[c]); } } } } });
int[] sliceIndexes = new int[matrix.slices()]; // indexes to reorder sliceIndexes[i] = i; final DoubleMatrix2D[] views = new DoubleMatrix2D[matrix.slices()]; // precompute views[i] = matrix.viewSlice(i); return matrix.viewSelection(sliceIndexes, null, null);
/** * Returns a string representation of the given matrix. * * @param matrix * the matrix to convert. */ public String toString(DoubleMatrix3D matrix) { StringBuffer buf = new StringBuffer(); boolean oldPrintShape = this.printShape; this.printShape = false; for (int slice = 0; slice < matrix.slices(); slice++) { if (slice != 0) buf.append(sliceSeparator); buf.append(toString(matrix.viewSlice(slice))); } this.printShape = oldPrintShape; if (printShape) buf.insert(0, shape(matrix) + "\n"); return buf.toString(); }
checkRow(row); int sliceRows = this.slices; int sliceColumns = this.columns; int sliceColumnZero = columnZero + _rowOffset(_rowRank(row)); return like2D(sliceRows, sliceColumns, sliceRowZero, sliceColumnZero, sliceRowStride, sliceColumnStride);
IntArrayList matches = new IntArrayList(); for (int i = 0; i < slices; i++) { if (condition.apply(viewSlice(i))) matches.add(i); return viewSelection(matches.elements(), null, null); // take all rows
if (row < 0 || row >= matrix.rows()) throw new IndexOutOfBoundsException("row=" + row + ", matrix=" + AbstractFormatter.shape(matrix)); if (column < 0 || column >= matrix.columns()) throw new IndexOutOfBoundsException("column=" + column + ", matrix=" + AbstractFormatter.shape(matrix)); int[] sliceIndexes = new int[matrix.slices()]; // indexes to reorder sliceIndexes[i] = i; final DoubleMatrix1D sliceView = matrix.viewRow(row).viewColumn(column); IntComparator comp = new IntComparator() { public int compare(int a, int b) { return matrix.viewSelection(sliceIndexes, null, null);
if (!(A != null && B != null)) return false; final int slices = A.slices(); final int rows = A.rows(); final int columns = A.columns(); if (columns != B.columns() || rows != B.rows() || slices != B.slices()) return false; boolean result = false; final double epsilon = tolerance(); int nthreads = ConcurrencyUtils.getNumberOfThreads(); if ((nthreads > 1) && (A.size() >= ConcurrencyUtils.getThreadsBeginN_3D())) { nthreads = Math.min(nthreads, slices); Future<?>[] futures = new Future[nthreads]; for (int r = 0; r < rows; r++) { for (int c = 0; c < columns; c++) { double x = A.getQuick(s, r, c); double value = B.getQuick(s, r, c); double diff = Math.abs(value - x); if ((diff != diff) && ((value != value && x != x) || value == x))
checkSliceIndexes(sliceIndexes); checkRowIndexes(rowIndexes); checkColumnIndexes(columnIndexes); sliceOffsets[i] = _sliceOffset(_sliceRank(sliceIndexes[i])); rowOffsets[i] = _rowOffset(_rowRank(rowIndexes[i])); columnOffsets[i] = _columnOffset(_columnRank(columnIndexes[i])); return viewSelectionLike(sliceOffsets, rowOffsets, columnOffsets);
if (values.length != slices * rows * columns) throw new IllegalArgumentException("Must have same length: length=" + values.length + "slices()*rows()*columns()=" + slices() * rows() * columns()); int nthreads = ConcurrencyUtils.getNumberOfThreads(); if ((nthreads > 1) && (slices * rows * columns >= ConcurrencyUtils.getThreadsBeginN_3D())) { for (int r = 0; r < rows; r++) { for (int c = 0; c < columns; c++) { setQuick(s, r, c, values[idx++]);