cern.colt.matrix.impl
Class AbstractMatrix3D

java.lang.Object
  extended by cern.colt.PersistentObject
      extended by cern.colt.matrix.impl.AbstractMatrix
          extended by cern.colt.matrix.impl.AbstractMatrix3D
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable
Direct Known Subclasses:
DoubleMatrix3D, ObjectMatrix3D

public abstract class AbstractMatrix3D
extends AbstractMatrix

Abstract base class for 3-d matrices holding objects or primitive data types such as int, double, etc. First see the package summary and javadoc tree view to get the broad picture.

Note that this implementation is not synchronized.

Author:
wolfgang.hoschek@cern.ch
See Also:
Serialized Form

Field Summary
protected  int columns
          the number of columns this matrix (view) has
protected  int columnStride
          the number of elements between two columns, i.e.
protected  int columnZero
          the index of the first element
protected  int rows
          the number of rows this matrix (view) has
protected  int rowStride
          the number of elements between two rows, i.e.
protected  int rowZero
          the index of the first element
protected  int slices
          the number of slices this matrix (view) has
protected  int sliceStride
          the number of elements between two slices, i.e.
protected  int sliceZero
          the index of the first element
 
Fields inherited from class cern.colt.matrix.impl.AbstractMatrix
isNoView
 
Fields inherited from class cern.colt.PersistentObject
serialVersionUID
 
Constructor Summary
protected AbstractMatrix3D()
          Makes this class non instantiable, but still let's others inherit from it.
 
Method Summary
protected  int _columnOffset(int absRank)
          Returns the position of the given absolute rank within the (virtual or non-virtual) internal 1-dimensional array.
protected  int _columnRank(int rank)
          Returns the absolute rank of the given relative rank.
protected  int _rowOffset(int absRank)
          Returns the position of the given absolute rank within the (virtual or non-virtual) internal 1-dimensional array.
protected  int _rowRank(int rank)
          Returns the absolute rank of the given relative rank.
protected  int _sliceOffset(int absRank)
          Returns the position of the given absolute rank within the (virtual or non-virtual) internal 1-dimensional array.
protected  int _sliceRank(int rank)
          Returns the absolute rank of the given relative rank.
protected  void checkBox(int slice, int row, int column, int depth, int height, int width)
          Checks whether the receiver contains the given box and throws an exception, if necessary.
protected  void checkColumn(int column)
          Sanity check for operations requiring a column index to be within bounds.
protected  void checkColumnIndexes(int[] indexes)
          Checks whether indexes are legal and throws an exception, if necessary.
protected  void checkRow(int row)
          Sanity check for operations requiring a row index to be within bounds.
protected  void checkRowIndexes(int[] indexes)
          Checks whether indexes are legal and throws an exception, if necessary.
 void checkShape(AbstractMatrix3D B)
          Sanity check for operations requiring two matrices with the same number of slices, rows and columns.
 void checkShape(AbstractMatrix3D B, AbstractMatrix3D C)
          Sanity check for operations requiring matrices with the same number of slices, rows and columns.
protected  void checkSlice(int slice)
          Sanity check for operations requiring a slice index to be within bounds.
protected  void checkSliceIndexes(int[] indexes)
          Checks whether indexes are legal and throws an exception, if necessary.
 int columns()
          Returns the number of columns.
protected  int index(int slice, int row, int column)
          Returns the position of the given coordinate within the (virtual or non-virtual) internal 1-dimensional array.
 int rows()
          Returns the number of rows.
protected  void setUp(int slices, int rows, int columns)
          Sets up a matrix with a given number of slices and rows.
protected  void setUp(int slices, int rows, int columns, int sliceZero, int rowZero, int columnZero, int sliceStride, int rowStride, int columnStride)
          Sets up a matrix with a given number of slices and rows and the given strides.
protected  int[] shape()
           
 int size()
          Returns the number of cells which is slices()*rows()*columns().
 int slices()
          Returns the number of slices.
 java.lang.String toStringShort()
          Returns a string representation of the receiver's shape.
protected  AbstractMatrix3D vColumnFlip()
          Self modifying version of viewColumnFlip().
protected  AbstractMatrix3D vDice(int axis0, int axis1, int axis2)
          Self modifying version of viewDice().
protected  AbstractMatrix3D vPart(int slice, int row, int column, int depth, int height, int width)
          Self modifying version of viewPart().
protected  AbstractMatrix3D vRowFlip()
          Self modifying version of viewRowFlip().
protected  AbstractMatrix3D vSliceFlip()
          Self modifying version of viewSliceFlip().
protected  AbstractMatrix3D vStrides(int sliceStride, int rowStride, int columnStride)
          Self modifying version of viewStrides().
 
Methods inherited from class cern.colt.matrix.impl.AbstractMatrix
ensureCapacity, isView, trimToSize
 
Methods inherited from class cern.colt.PersistentObject
clone
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

slices

protected int slices
the number of slices this matrix (view) has


rows

protected int rows
the number of rows this matrix (view) has


columns

protected int columns
the number of columns this matrix (view) has


sliceStride

protected int sliceStride
the number of elements between two slices, i.e. index(k+1,i,j) - index(k,i,j).


rowStride

protected int rowStride
the number of elements between two rows, i.e. index(k,i+1,j) - index(k,i,j).


columnStride

protected int columnStride
the number of elements between two columns, i.e. index(k,i,j+1) - index(k,i,j).


sliceZero

protected int sliceZero
the index of the first element


rowZero

protected int rowZero
the index of the first element


columnZero

protected int columnZero
the index of the first element

Constructor Detail

AbstractMatrix3D

protected AbstractMatrix3D()
Makes this class non instantiable, but still let's others inherit from it.

Method Detail

_columnOffset

protected int _columnOffset(int absRank)
Returns the position of the given absolute rank within the (virtual or non-virtual) internal 1-dimensional array. Default implementation. Override, if necessary.

Parameters:
rank - the absolute rank of the element.
Returns:
the position.

_columnRank

protected int _columnRank(int rank)
Returns the absolute rank of the given relative rank.

Parameters:
rank - the relative rank of the element.
Returns:
the absolute rank of the element.

_rowOffset

protected int _rowOffset(int absRank)
Returns the position of the given absolute rank within the (virtual or non-virtual) internal 1-dimensional array. Default implementation. Override, if necessary.

Parameters:
rank - the absolute rank of the element.
Returns:
the position.

_rowRank

protected int _rowRank(int rank)
Returns the absolute rank of the given relative rank.

Parameters:
rank - the relative rank of the element.
Returns:
the absolute rank of the element.

_sliceOffset

protected int _sliceOffset(int absRank)
Returns the position of the given absolute rank within the (virtual or non-virtual) internal 1-dimensional array. Default implementation. Override, if necessary.

Parameters:
rank - the absolute rank of the element.
Returns:
the position.

_sliceRank

protected int _sliceRank(int rank)
Returns the absolute rank of the given relative rank.

Parameters:
rank - the relative rank of the element.
Returns:
the absolute rank of the element.

checkBox

protected void checkBox(int slice,
                        int row,
                        int column,
                        int depth,
                        int height,
                        int width)
Checks whether the receiver contains the given box and throws an exception, if necessary.

Throws:
java.lang.IndexOutOfBoundsException - if row<0 || height<0 || row+height>rows || slice<0 || depth<0 || slice+depth>slices || column<0 || width<0 || column+width>columns

checkColumn

protected void checkColumn(int column)
Sanity check for operations requiring a column index to be within bounds.

Throws:
java.lang.IndexOutOfBoundsException - if column < 0 || column >= columns().

checkColumnIndexes

protected void checkColumnIndexes(int[] indexes)
Checks whether indexes are legal and throws an exception, if necessary.

Throws:
java.lang.IndexOutOfBoundsException - if ! (0 <= indexes[i] < columns()) for any i=0..indexes.length()-1.

checkRow

protected void checkRow(int row)
Sanity check for operations requiring a row index to be within bounds.

Throws:
java.lang.IndexOutOfBoundsException - if row < 0 || row >= rows().

checkRowIndexes

protected void checkRowIndexes(int[] indexes)
Checks whether indexes are legal and throws an exception, if necessary.

Throws:
java.lang.IndexOutOfBoundsException - if ! (0 <= indexes[i] < rows()) for any i=0..indexes.length()-1.

checkShape

public void checkShape(AbstractMatrix3D B)
Sanity check for operations requiring two matrices with the same number of slices, rows and columns.

Throws:
java.lang.IllegalArgumentException - if slices() != B.slices() || rows() != B.rows() || columns() != B.columns().

checkShape

public void checkShape(AbstractMatrix3D B,
                       AbstractMatrix3D C)
Sanity check for operations requiring matrices with the same number of slices, rows and columns.

Throws:
java.lang.IllegalArgumentException - if slices() != B.slices() || rows() != B.rows() || columns() != B.columns() || slices() != C.slices() || rows() != C.rows() || columns() != C.columns().

checkSlice

protected void checkSlice(int slice)
Sanity check for operations requiring a slice index to be within bounds.

Throws:
java.lang.IndexOutOfBoundsException - if slice < 0 || slice >= slices().

checkSliceIndexes

protected void checkSliceIndexes(int[] indexes)
Checks whether indexes are legal and throws an exception, if necessary.

Throws:
java.lang.IndexOutOfBoundsException - if ! (0 <= indexes[i] < slices()) for any i=0..indexes.length()-1.

columns

public int columns()
Returns the number of columns.


index

protected int index(int slice,
                    int row,
                    int column)
Returns the position of the given coordinate within the (virtual or non-virtual) internal 1-dimensional array.

Parameters:
slice - the index of the slice-coordinate.
row - the index of the row-coordinate.
column - the index of the third-coordinate.

rows

public int rows()
Returns the number of rows.


setUp

protected void setUp(int slices,
                     int rows,
                     int columns)
Sets up a matrix with a given number of slices and rows.

Parameters:
slices - the number of slices the matrix shall have.
rows - the number of rows the matrix shall have.
columns - the number of columns the matrix shall have.
Throws:
java.lang.IllegalArgumentException - if (double)rows*slices > Integer.MAX_VALUE.
java.lang.IllegalArgumentException - if slices<0 || rows<0 || columns<0.

setUp

protected void setUp(int slices,
                     int rows,
                     int columns,
                     int sliceZero,
                     int rowZero,
                     int columnZero,
                     int sliceStride,
                     int rowStride,
                     int columnStride)
Sets up a matrix with a given number of slices and rows and the given strides.

Parameters:
slices - the number of slices the matrix shall have.
rows - the number of rows the matrix shall have.
columns - the number of columns the matrix shall have.
sliceZero - the position of the first element.
rowZero - the position of the first element.
columnZero - the position of the first element.
sliceStride - the number of elements between two slices, i.e. index(k+1,i,j)-index(k,i,j).
rowStride - the number of elements between two rows, i.e. index(k,i+1,j)-index(k,i,j).
columnnStride - the number of elements between two columns, i.e. index(k,i,j+1)-index(k,i,j).
Throws:
java.lang.IllegalArgumentException - if (double)slices*rows*columnss > Integer.MAX_VALUE.
java.lang.IllegalArgumentException - if slices<0 || rows<0 || columns<0.

shape

protected int[] shape()

size

public int size()
Returns the number of cells which is slices()*rows()*columns().

Specified by:
size in class AbstractMatrix

slices

public int slices()
Returns the number of slices.


toStringShort

public java.lang.String toStringShort()
Returns a string representation of the receiver's shape.


vColumnFlip

protected AbstractMatrix3D vColumnFlip()
Self modifying version of viewColumnFlip().


vDice

protected AbstractMatrix3D vDice(int axis0,
                                 int axis1,
                                 int axis2)
Self modifying version of viewDice().

Throws:
java.lang.IllegalArgumentException - if some of the parameters are equal or not in range 0..2.

vPart

protected AbstractMatrix3D vPart(int slice,
                                 int row,
                                 int column,
                                 int depth,
                                 int height,
                                 int width)
Self modifying version of viewPart().

Throws:
java.lang.IndexOutOfBoundsException - if slice<0 || depth<0 || slice+depth>slices() || row<0 || height<0 || row+height>rows() || column<0 || width<0 || column+width>columns()

vRowFlip

protected AbstractMatrix3D vRowFlip()
Self modifying version of viewRowFlip().


vSliceFlip

protected AbstractMatrix3D vSliceFlip()
Self modifying version of viewSliceFlip().


vStrides

protected AbstractMatrix3D vStrides(int sliceStride,
                                    int rowStride,
                                    int columnStride)
Self modifying version of viewStrides().

Throws:
java.lang.IndexOutOfBoundsException - if sliceStride<=0 || rowStride<=0 || columnStride<=0.