sugr.linalg
Class MatrixImplColt

java.lang.Object
  extended bysugr.linalg.MatrixImplColt
All Implemented Interfaces:
java.lang.Cloneable, Matrix, java.io.Serializable

public class MatrixImplColt
extends java.lang.Object
implements Matrix

Author:
beder
See Also:
Serialized Form

Field Summary
protected  cern.colt.matrix.DoubleMatrix2D impl
           
private static long serialVersionUID
          Class version number for serialization
 
Constructor Summary
protected MatrixImplColt()
           
  MatrixImplColt(double[][] values)
           
  MatrixImplColt(int no_rows, int no_cols)
           
  MatrixImplColt(Matrix m)
           
 
Method Summary
 java.lang.Object clone()
          Clone a matrix.
 Matrix copy()
          Create a new matrix B, independent from A
 Matrix delColumn(int col)
          delete a column from A.
 Matrix delRow(int row)
          delete a row from A.
 double det()
          Computes the determinant of the matrix
 double[] eig()
           EigenvalueDecomposition of this Matrix
 boolean equals(java.lang.Object obj)
          Test, whether A and B are identical or not
 double get(int row, int col)
           Get a single element
 Vector getColumn(int j)
           
 int getColumnDimension()
           Like the name says :-)
 Matrix getMatrix(int i0, int i1, int j0, int j1)
           Returns a Submatrix with dimension (i1-i0) x (j1-j0) Upper left element begin with indices (0,0)
 Vector getRow(int i)
           
 int getRowDimension()
           Like the name says :-)
 Matrix invert()
           Matrix inverse or pseudoinverse
 boolean isSemiDefinite()
          Test, whether A ist semidefinit or not
 Matrix kronecker(Matrix B)
          Calculates the kronecker-product of two matrices.
 Matrix minus(Matrix B)
           C=A-B
 Matrix mult(double f)
           B=A*f , where f is a scalar
 Matrix mult(Matrix B)
           C=A*B
 Vector mult(Vector v)
           B=A*v, where v is a vector.
 Matrix plus(Matrix B)
           C=A+B
 void print()
           Prints this matrix to stdout
 void print(int w, int d)
           Prints this matrix to stdout
It may be useful to select w > d.
 void printMatlab()
           Prints this matrix in Matlab format to stdout
 Matrix pseudoInverse(int rank)
           returns the pseudo-inverse A^+ .
 Matrix pseudoInverse(Matrix H)
           returns the pseudo-inverse A^+ with given Nullspace
 Matrix[] qr()
           Computes the QR Decomposition of given Matrix
 void set(double value)
           Sets all elements of the matrix to the given value.
 void set(int row, int col, double value)
           Set a single element
 void setColumn(int j, Vector v)
           
 void setRow(int i, Vector v)
           
 Matrix slice(int[] listOfRows, int[] listOfCols)
           Get submatrix with given list of rows and given list of columns.
 void slice(int[] listOfRows, int[] listOfCols, Matrix B)
           As other slice, only: read values from Matrix B and put them in the object at the posisitions of the intersections of given rows and columns.
 Matrix slice(int i0, int i1, int j0, int j1)
          Gets a submatrix of A
 void slice(int i0, int i1, int j0, int j1, Matrix B)
          Sets a submatrix of A with B
 Vector solve(Vector y)
           
 Matrix[] svd()
           Computes the SingularValueDecomposition of given Matrix with dimension m x n (m>=n), so the result is given by: Matrix = U*S*V^t
 java.lang.String toString()
          Delivers a string with the elements of the matrix.
 Matrix trans()
           Matrix transpose
 Vector vec()
          returns the matrix as a vector: First the first column, then the second column and so on.
 
Methods inherited from class java.lang.Object
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

serialVersionUID

private static final long serialVersionUID
Class version number for serialization

See Also:
Constant Field Values

impl

protected cern.colt.matrix.DoubleMatrix2D impl
Constructor Detail

MatrixImplColt

public MatrixImplColt(int no_rows,
                      int no_cols)

MatrixImplColt

public MatrixImplColt(double[][] values)

MatrixImplColt

public MatrixImplColt(Matrix m)

MatrixImplColt

protected MatrixImplColt()
Method Detail

plus

public Matrix plus(Matrix B)
Description copied from interface: Matrix

C=A+B

Specified by:
plus in interface Matrix
Parameters:
B - Must have same dimensions like this matrix

Returns:
A+B


minus

public Matrix minus(Matrix B)
Description copied from interface: Matrix

C=A-B

Specified by:
minus in interface Matrix
Parameters:
B - Must have same dimensions like this matrix

Returns:
A-B


mult

public Matrix mult(Matrix B)
Description copied from interface: Matrix

C=A*B

Specified by:
mult in interface Matrix
Parameters:
B - rowDim of B must be the same like colDim from A

Returns:
A*B


trans

public Matrix trans()
Description copied from interface: Matrix

Matrix transpose

Specified by:
trans in interface Matrix
Returns:
A'


get

public double get(int row,
                  int col)
Description copied from interface: Matrix

Get a single element

Specified by:
get in interface Matrix
Parameters:
row - row-index

col - column-index

Returns:
the element as double


set

public void set(int row,
                int col,
                double value)
Description copied from interface: Matrix

Set a single element

Specified by:
set in interface Matrix
Parameters:
row - row-index

col - column-index

value - A(i,j):=value


getRowDimension

public int getRowDimension()
Description copied from interface: Matrix

Like the name says :-)

Specified by:
getRowDimension in interface Matrix
Returns:
a int containing the rowDim


getColumnDimension

public int getColumnDimension()
Description copied from interface: Matrix

Like the name says :-)

Specified by:
getColumnDimension in interface Matrix
Returns:
a int containing the columnDim


invert

public Matrix invert()
Description copied from interface: Matrix

Matrix inverse or pseudoinverse

Specified by:
invert in interface Matrix
Returns:
inverse(A) if A is square, pseudoinverse otherwise.


mult

public Matrix mult(double f)
Description copied from interface: Matrix

B=A*f , where f is a scalar

Specified by:
mult in interface Matrix
Parameters:
f - scalar, given as double

Returns:
A*f


mult

public Vector mult(Vector v)
Description copied from interface: Matrix

B=A*v, where v is a vector. Dimension of v and column dimension of A must agree

Specified by:
mult in interface Matrix
Parameters:
v - Vector, with dimension the same as column-dimension of A

Returns:
A*v


svd

public Matrix[] svd()
Description copied from interface: Matrix

Computes the SingularValueDecomposition of given Matrix with dimension m x n (m>=n), so the result is given by: Matrix = U*S*V^t

Specified by:
svd in interface Matrix
Returns:
a Matrix[] containing 3 elements:
  • Matrix[0] = U (orthogonal, m x n)
  • Matrix[1] = S (the diagonalmatrix, n x n, containing the singularvalues)
  • Matrix[2] = V (orthogonal, n x n)
    (note, that the result is NOT transposed)
e.g.:
 orig_matrix = Matrix[0].mult(Matrix[1]).mult(Matrix[2].trans()); 
gives the original matrix


slice

public Matrix slice(int[] listOfRows,
                    int[] listOfCols)
Description copied from interface: Matrix

Get submatrix with given list of rows and given list of columns. If listofRows is emtpy, get complete column, if listOfCols is empty, get complete rows.

Specified by:
slice in interface Matrix
Parameters:
listOfRows - ...

listOfCols - ...

Returns:
a Matrix with ...


slice

public void slice(int[] listOfRows,
                  int[] listOfCols,
                  Matrix B)
Description copied from interface: Matrix

As other slice, only: read values from Matrix B and put them in the object at the posisitions of the intersections of given rows and columns.

Specified by:
slice in interface Matrix
Parameters:
listOfRows - ...

listOfCols - ...

B - ...


slice

public void slice(int i0,
                  int i1,
                  int j0,
                  int j1,
                  Matrix B)
Description copied from interface: Matrix
Sets a submatrix of A with B

Specified by:
slice in interface Matrix
Parameters:
i0 - initial row index (upper left is (0,0) )
i1 - final row index
j0 - initial column index
j1 - final column index
B - Matrix with dimension (i1-i0+1 x j1-j0+1)

slice

public Matrix slice(int i0,
                    int i1,
                    int j0,
                    int j1)
Description copied from interface: Matrix
Gets a submatrix of A

Specified by:
slice in interface Matrix
Parameters:
i0 - initial row index (upper left is (0,0) )
i1 - final row index
j0 - initial column index
j1 - final column index

vec

public Vector vec()
Description copied from interface: Matrix
returns the matrix as a vector: First the first column, then the second column and so on.
 e.g. : if A = | a b |  then A.vec() returns | a |
               | c d |                       | c |
                                             | b |
                                             | d |
 

Specified by:
vec in interface Matrix
Returns:
a Vector with dimension m*n

copy

public Matrix copy()
Description copied from interface: Matrix
Create a new matrix B, independent from A

Specified by:
copy in interface Matrix
Returns:
B with B=A

set

public void set(double value)
Description copied from interface: Matrix

Sets all elements of the matrix to the given value.

Specified by:
set in interface Matrix
Parameters:
value -


print

public void print(int w,
                  int d)
Description copied from interface: Matrix

Prints this matrix to stdout
It may be useful to select w > d. A common value is w=5, d=3

Specified by:
print in interface Matrix
Parameters:
w - describes the width of a single element
d - number of decimals after comma

print

public void print()
Description copied from interface: Matrix

Prints this matrix to stdout

Specified by:
print in interface Matrix

printMatlab

public void printMatlab()
Description copied from interface: Matrix

Prints this matrix in Matlab format to stdout

Specified by:
printMatlab in interface Matrix

toString

public java.lang.String toString()
Delivers a string with the elements of the matrix.

Specified by:
toString in interface Matrix
Returns:
a string for printing

getMatrix

public Matrix getMatrix(int i0,
                        int i1,
                        int j0,
                        int j1)
Description copied from interface: Matrix

Returns a Submatrix with dimension (i1-i0) x (j1-j0) Upper left element begin with indices (0,0)

Specified by:
getMatrix in interface Matrix
Parameters:
i0 - Initial row index
i1 - Final row index
j0 - Initial column index
j1 - Final column index


eig

public double[] eig()
Description copied from interface: Matrix

EigenvalueDecomposition of this Matrix

Specified by:
eig in interface Matrix
Returns:
a double-Array containing the eigenvalues. They are sorted in so that [0] is the biggest and [n] is the smallest value


isSemiDefinite

public boolean isSemiDefinite()
Description copied from interface: Matrix
Test, whether A ist semidefinit or not

Specified by:
isSemiDefinite in interface Matrix
Returns:
boolean value: true, if all eigenvalues >= 0

pseudoInverse

public Matrix pseudoInverse(int rank)
Description copied from interface: Matrix

returns the pseudo-inverse A^+ . This is done via SVD with a given rank

Specified by:
pseudoInverse in interface Matrix
Parameters:
rank - the rank which A with the given elements should have

Returns:
A^+


kronecker

public Matrix kronecker(Matrix B)
Description copied from interface: Matrix
Calculates the kronecker-product of two matrices. Let A=(a_ij) be a (n x m)-Matrix and B=(a_ij) a (p x q)-Matrix. Then the result-matrix C is a (mp x nq)-Matrix with
                  |a_11*B ...  a_1n*B |
              C = |...            ... |
                  |a_m1*B ...  a_mn*B |
 

Specified by:
kronecker in interface Matrix
Parameters:
B - an arbitrary-Matrix
Returns:
a Matrix with dimension (mp x nq)

det

public double det()
Description copied from interface: Matrix
Computes the determinant of the matrix

Specified by:
det in interface Matrix
Returns:
determinant of the matrix

getRow

public Vector getRow(int i)
Specified by:
getRow in interface Matrix

getColumn

public Vector getColumn(int j)
Specified by:
getColumn in interface Matrix

setRow

public void setRow(int i,
                   Vector v)
Specified by:
setRow in interface Matrix

setColumn

public void setColumn(int j,
                      Vector v)
Specified by:
setColumn in interface Matrix

solve

public Vector solve(Vector y)
Specified by:
solve in interface Matrix

delColumn

public Matrix delColumn(int col)
Description copied from interface: Matrix
delete a column from A.
 e.g. : if A looks like
        | a11 a12 a13 |
        | a21 a22 a23 |    3x3 Matrix
        | a31 a32 a33 |
 
 then A.delColumn(0) returns
            | a12 a13 |
            | a22 a23 |    3x2 Matrix
            | a32 a33 |
 

Specified by:
delColumn in interface Matrix
Parameters:
col - column to delete. Must be between 0 and m-1, if A is nxm
Returns:
nx(m-1) Matrix

delRow

public Matrix delRow(int row)
Description copied from interface: Matrix
delete a row from A.
 e.g. : if A looks like
        | a11 a12 a13 |
        | a21 a22 a23 |    3x3 Matrix
        | a31 a32 a33 |
 
 then A.delRow(0) returns
 
        | a21 a22 a23 |    2x3 Matrix
        | a31 a32 a33 |
 

Specified by:
delRow in interface Matrix
Parameters:
row - row to delete. Must be between 0 and n-1, if A is nxm
Returns:
(n-1)xm Matrix

qr

public Matrix[] qr()
Description copied from interface: Matrix

Computes the QR Decomposition of given Matrix

Specified by:
qr in interface Matrix
Returns:
a Matrix[] containing 3 elements:
  • Matrix[0] = Q
  • Matrix[1] = R


clone

public java.lang.Object clone()
Description copied from interface: Matrix
Clone a matrix.

Specified by:
clone in interface Matrix

equals

public boolean equals(java.lang.Object obj)
Description copied from interface: Matrix
Test, whether A and B are identical or not

Specified by:
equals in interface Matrix

pseudoInverse

public Matrix pseudoInverse(Matrix H)
Description copied from interface: Matrix

returns the pseudo-inverse A^+ with given Nullspace

Specified by:
pseudoInverse in interface Matrix
Parameters:
H - nullspace

Returns:
A^+