Class CompDiagMatrix

java.lang.Object
no.uib.cipr.matrix.AbstractMatrix
no.uib.cipr.matrix.sparse.CompDiagMatrix
All Implemented Interfaces:
Iterable<MatrixEntry>, Matrix

public class CompDiagMatrix extends AbstractMatrix
Compressed diagonal storage (CDS) matrix
  • Constructor Details

    • CompDiagMatrix

      public CompDiagMatrix(MatrixVectorReader r) throws IOException
      Constructor for CompDiagMatrix
      Parameters:
      r - Reader to get sparse matrix from
      Throws:
      IOException
    • CompDiagMatrix

      public CompDiagMatrix(int numRows, int numColumns, int[] diagonal)
      Creates a new sparse matrix with the given diagonals preallocated. A negative index is a subdiagonal, positive is superdiagonal
    • CompDiagMatrix

      public CompDiagMatrix(int numRows, int numColumns)
      Creates a new sparse matrix without preallocation
    • CompDiagMatrix

      public CompDiagMatrix(Matrix A, int[] diagonal, boolean deep)
      Creates a new sparse matrix copied from the given matrix. Can take a deep copy or a shallow copy. For the latter, the supplied matrix must be a CompDiagMatrix. Preallocation is also possible, but is only used for the deep copy.
    • CompDiagMatrix

      public CompDiagMatrix(Matrix A, int[] diagonal)
      Creates a new sparse matrix copied from the given matrix. Takes a deep copy, with possibility to specify preallocation
    • CompDiagMatrix

      public CompDiagMatrix(Matrix A, boolean deep)
      Creates a new sparse matrix copied from the given matrix. Can take a deep copy or a shallow copy. For the latter, the supplied matrix must be a CompDiagMatrix. No preallocation is done
    • CompDiagMatrix

      public CompDiagMatrix(Matrix A)
      Creates a new sparse matrix copied from the given matrix. Takes a deep copy without preallocation
  • Method Details

    • getDiagonals

      public double[][] getDiagonals()
      Returns the internal diagonal storage
    • getIndex

      public int[] getIndex()
      Returns the diagonal offsets
    • add

      public void add(int row, int column, double value)
      Description copied from interface: Matrix
      A(row,column) += value
      Specified by:
      add in interface Matrix
      Overrides:
      add in class AbstractMatrix
    • get

      public double get(int row, int column)
      Description copied from interface: Matrix
      Returns A(row,column)
      Specified by:
      get in interface Matrix
      Overrides:
      get in class AbstractMatrix
    • set

      public void set(int row, int column, double value)
      Description copied from interface: Matrix
      A(row,column) = value
      Specified by:
      set in interface Matrix
      Overrides:
      set in class AbstractMatrix
    • copy

      public Matrix copy()
      Description copied from interface: Matrix
      Creates a deep copy of the matrix
      Specified by:
      copy in interface Matrix
      Overrides:
      copy in class AbstractMatrix
      Returns:
      A
    • zero

      public Matrix zero()
      Description copied from interface: Matrix
      Zeros all the entries in the matrix, while preserving any underlying structure. Useful for general, unstructured matrices.
      Specified by:
      zero in interface Matrix
      Overrides:
      zero in class AbstractMatrix
      Returns:
      A
    • mult

      public Vector mult(Vector x, Vector y)
      Description copied from interface: Matrix
      y = A*x
      Specified by:
      mult in interface Matrix
      Overrides:
      mult in class AbstractMatrix
      Parameters:
      x - Vector of size A.numColumns()
      y - Vector of size A.numRows()
      Returns:
      y
    • multAdd

      public Vector multAdd(double alpha, Vector x, Vector y)
      Description copied from interface: Matrix
      y = alpha*A*x + y
      Specified by:
      multAdd in interface Matrix
      Overrides:
      multAdd in class AbstractMatrix
      x - Vector of size A.numColumns()
      y - Vector of size A.numRows()
      Returns:
      y
    • transMultAdd

      public Vector transMultAdd(double alpha, Vector x, Vector y)
      Description copied from interface: Matrix
      y = alpha*AT*x + y
      Specified by:
      transMultAdd in interface Matrix
      Overrides:
      transMultAdd in class AbstractMatrix
      x - Vector of size A.numRows()
      y - Vector of size A.numColumns()
      Returns:
      y
    • iterator

      public Iterator<MatrixEntry> iterator()
      Specified by:
      iterator in interface Iterable<MatrixEntry>
      Overrides:
      iterator in class AbstractMatrix