Class Matrices

java.lang.Object
no.uib.cipr.matrix.Matrices

public final class Matrices extends Object
Static utility methods for matrices and vectors
  • Method Details

    • cardinality

      public static int cardinality(Vector x)
      Returns the number of non-zero entries in the given vector
    • cardinality

      public static int cardinality(Matrix A)
      Returns the number of non-zero entries in the given matrix
    • getArray

      public static double[][] getArray(Matrix A)
      Returns an array of arrays containing a copy of the given matrix. Each array contains one row.
    • getArray

      public static double[] getArray(Vector x)
      Returns a dense array containing a copy of the given vector
    • identity

      public static DenseMatrix identity(int size)
      Returns the identity matrix of the given size
      Parameters:
      size - Number of rows/columns of the matrix
      Returns:
      Matrix of the given size, with ones on the main diagonal
    • random

      public static Vector random(int size)
      Creates a random vector. Numbers are drawn from a uniform distribution between 0 and 1
      Parameters:
      size - Size of the vector
    • random

      public static Vector random(Vector x)
      Populates a vector with random numbers drawn from a uniform distribution between 0 and 1
      Parameters:
      x - Vector to populate
    • random

      public static Matrix random(int numRows, int numColumns)
      Creates a random matrix. Numbers are drawn from a uniform distribution between 0 and 1
      Parameters:
      numRows - Number of rows
      numColumns - Number of columns
    • random

      public static Matrix random(Matrix A)
      Populates a matrix with random numbers drawn from a uniform distribution between 0 and 1
      Parameters:
      A - Matrix to populate
    • synchronizedVector

      public static Vector synchronizedVector(Vector x)
      Returns a synchronized vector which wraps the given vector. Only the set(int, double) and add(int, double) methods and their blocked versions are synchronized.

      Note: Do not use the wrapped vector for any operations besides matrix assembly, as these operations may be very slow.

      Parameters:
      x - Vector to be wrapped
      Returns:
      A thin wrapper around x
    • synchronizedMatrix

      public static Matrix synchronizedMatrix(Matrix A)
      Returns a synchronized matrix which wraps the given matrix. Only the set(int, int, double) and add(int, int, double) methods and their blocked versions are synchronized.

      Note: Do not use the wrapped matrix for any operations besides matrix assembly, as these operations may be very slow.

      Parameters:
      A - Matrix to be wrapped
      Returns:
      A thin wrapper around A
    • synchronizedMatrixByRows

      public static Matrix synchronizedMatrixByRows(Matrix A)
      Returns a synchronized matrix which wraps the given matrix. Only the set(int, int, double) and add(int, int, double) methods and their blocked versions are synchronized.

      The locking provided is finer than the locking of the whole matrix, as different threads can access different rows simultaneous, while only one thread can access a given row at a time. Use this for row-major matrices, not for column-major matrices.

      Note: Do not use the wrapped matrix for any operations besides matrix assembly, as these operations may be very slow.

      Parameters:
      A - Matrix to be wrapped
      Returns:
      A thin wrapper around A. Individual rows are locked
    • synchronizedMatrixByColumns

      public static Matrix synchronizedMatrixByColumns(Matrix A)
      Returns a synchronized matrix which wraps the given matrix. Only the set(int, int, double) and add(int, int, double) methods and their blocked versions are synchronized.

      The locking provided is finer than the locking of the whole matrix, as different threads can access different columns simultaneous, while only one thread can access a given column at a time. Use this for column-major matrices, not for row-major matrices.

      Note: Do not use the wrapped matrix for any operations besides matrix assembly, as these operations may be very slow.

      Parameters:
      A - Matrix to be wrapped
      Returns:
      A thin wrapper around A. Individual columns are locked
    • getSubMatrix

      public static Matrix getSubMatrix(Matrix A, int[] row, int[] column)
      Returns a view into the given matrix. This view is only for easing some matrix-assembly cases, not for general use. To extract a more higher-performing and general matrix, create a copy of the submatrix. The result is a DenseMatrix.
      Parameters:
      A - Matrix to create view on
      row - Rows to access. Must be within the bounds of A
      column - Columns to access. Must be within the bounds of A
      Returns:
      Submatrix of A. Changing it will change the backing matrix
    • getSubVector

      public static Vector getSubVector(Vector x, int[] index)
      Returns a view into the given vector. This view is only for easing some vector-assembly cases, not for general use. To extract a more higher-performing and general vector, create a copy of the subvector. The result is a DenseVector.
      Parameters:
      x - Vector to create view on
      index - Indices to access. Must be within the bounds of x
      Returns:
      Submatrix of x. Changing it will change the backing matrix
    • index

      public static int[] index(int from, int to)
      Creates a continuous linear index.
      Parameters:
      from - Start, inclusive
      to - Stop, exclusive
    • index

      public static int[] index(int from, int stride, int to)
      Creates a strided linear index.
      Parameters:
      from - Start, inclusive
      stride - stride=1 for continuous. Negative strides are allowed
      to - Stop, exclusive
    • rowBandwidth

      public static int[] rowBandwidth(Matrix A)
      Finds the number of non-zero entries on each row
    • columnBandwidth

      public static int[] columnBandwidth(Matrix A)
      Finds the number of non-zero entries on each column
    • getNumSubDiagonals

      public static int getNumSubDiagonals(Matrix A)
      Finds the number of diagonals below the main diagonal. Useful for converting a general matrix into a banded matrix
    • getNumSuperDiagonals

      public static int getNumSuperDiagonals(Matrix A)
      Finds the number of diagonals above the main diagonal. Useful for converting a general matrix into a banded matrix
    • zeroRows

      public static void zeroRows(Matrix A, double diagonal, int... row)
      Sets the selected rows of A equal zero, and puts diagonal on the diagonal of those rows. Useful for enforcing boundary conditions
    • zeroColumns

      public static void zeroColumns(Matrix A, double diagonal, int... column)
      Sets the selected columns of A equal zero, and puts diagonal on the diagonal of those columns. Useful for enforcing boundary conditions