mp
Class MPSparseMatrix

java.lang.Object
  extended bymp.MPDictionary
      extended bymp.MPSparseMatrix

public class MPSparseMatrix
extends MPDictionary

This class is a sparse matrix implementation of the MPDictionary superclass.


Constructor Summary
MPSparseMatrix(int iN, int iK)
          Constructs a N×K matrix or dictionary with only zeros.
MPSparseMatrix(int iN, int iK, double[] val)
          Constructs a N×K matrix or dictionary with values from given one-dimensional array (which represents the matrix).
 
Method Summary
 void addColumn(int k, double factor, double[] x)
          Add a column of the matrix multiplied by a factor to a given vector.
 int getCapacity()
          Returns current size (capacity for non-zero values) in sparse matrix.
 double[] getColumn(int k)
          Returns a column of the matrix, i.e. a dictionary element or atom.
 void getColumn(int k, double[] d)
          Sets argument d to a column of the matrix, i.e. a dictionary element or atom.
 int getNonZeroCount()
          Returns number of non-zeros elements in sparse matrix.
 double[] getRow(int n)
          Returns a row of the matrix which represents the dictionary Legal range of the integer argument is 0 <= n < N.
 double getValue(int n, int k)
          Returns an entry of the matrix, i.e. a single entry of a dictionary element (atom).
 double innerProduct(int k1, int k2)
          Returns the inner product of two dictionary elements, i.e. matrix column vectors.
 double[] multiply(double[] y)
          Multiplies the dictionary D by array y.
 void multiply(double[] y, double[] x)
          Multiplies the dictionary D by array y.
 void normalize()
          Normalize the dictionary, i.e. multiply each dictionary element (matrix column vector) by a number (scalar) such that the 2-norm, i.e. sum of squares, will be 1.0.
 void setValue(int n, int k, double val)
          Set an entry (a value) in the dictionary.
 double[] transposeMultiply(double[] x)
          Multiplies the transposed dictionary D' by array x.
 void transposeMultiply(double[] x, double[] y)
          Multiplies the transposed dictionary D' by array x.
 
Methods inherited from class mp.MPDictionary
getColumns, getK, getN, getRow, getRows, isNormalized, setColumn, setRow
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MPSparseMatrix

public MPSparseMatrix(int iN,
                      int iK)
Constructs a N×K matrix or dictionary with only zeros.

Parameters:
iN - length of dictionary elements, i.e. column vectors of the matrix
iK - number of dictionary elements

MPSparseMatrix

public MPSparseMatrix(int iN,
                      int iK,
                      double[] val)
Constructs a N×K matrix or dictionary with values from given one-dimensional array (which represents the matrix). Length of the array should be N*K.

Parameters:
iN - length of dictionary elements, i.e. column vectors of the matrix
iK - number of dictionary elements
val - the values (ordered by column, i.e. by dictionary elements)
Method Detail

getNonZeroCount

public int getNonZeroCount()
Returns number of non-zeros elements in sparse matrix.


getCapacity

public int getCapacity()
Returns current size (capacity for non-zero values) in sparse matrix.


getValue

public double getValue(int n,
                       int k)
Returns an entry of the matrix, i.e. a single entry of a dictionary element (atom). Note that the row, i.e. position in the column, is given first, the second argument is the column number i.e. the number of the dictionary atom. We should have: 0 <= n < N and 0 <= k < K. If any argument is outside legal range 0.0 is returned without error or warning.

Specified by:
getValue in class MPDictionary
Parameters:
n - row number for the returned entry value.
k - column number for the returned entry value.

setValue

public void setValue(int n,
                     int k,
                     double val)
Set an entry (a value) in the dictionary. Note that the row, i.e. position in the column, is given first, the second argument is the column number i.e. the number of the dictionary atom. We should have: 0 <= n < N and 0 <= k < K. If any argument is outside legal range nothing is done.

Specified by:
setValue in class MPDictionary
Parameters:
n - row number for the entry value to be changed.
k - column number for the entry value to be changed.
val - the value to be put into the given entry of the dictionary.

innerProduct

public double innerProduct(int k1,
                           int k2)
Returns the inner product of two dictionary elements, i.e. matrix column vectors. Legal range is 0 <= k1 < K and 0 <= k2 < K. If k1 or k2 are out of range, 0.0 should be returned.

Overrides:
innerProduct in class MPDictionary
Parameters:
k1 - number for the first dictionary element.
k2 - number for the second dictionary element.

normalize

public void normalize()
Normalize the dictionary, i.e. multiply each dictionary element (matrix column vector) by a number (scalar) such that the 2-norm, i.e. sum of squares, will be 1.0.
This function should set the class variable normalized to true.

Overrides:
normalize in class MPDictionary

getColumn

public double[] getColumn(int k)
Returns a column of the matrix, i.e. a dictionary element or atom. Legal range of the integer argument is 0 <= k < K. If argument is out of range a length N array of zeros should be returned.
The corresponding Matlab expression would be: D(:,k+1).

Overrides:
getColumn in class MPDictionary
Parameters:
k - number of the column in dictionary, i.e. matrix D.

getColumn

public void getColumn(int k,
                      double[] d)
Sets argument d to a column of the matrix, i.e. a dictionary element or atom. Legal range of the integer argument is 0 <= k < K. If argument is out of range a length N array of zeros should be returned.
The corresponding Matlab expression would be: D(:,k+1).

Overrides:
getColumn in class MPDictionary
Parameters:
k - number of the column in dictionary, i.e. matrix D.
d - the given column of matrix D.

addColumn

public void addColumn(int k,
                      double factor,
                      double[] x)
Add a column of the matrix multiplied by a factor to a given vector. Legal range of the integer argument is 0 <= k < K.
The corresponding Matlab expression would be: x = x+f*D(:,k+1).

Overrides:
addColumn in class MPDictionary
Parameters:
k - number of the column in dictionary, i.e. matrix D.
factor - a factor to multiply the column vector by.
x - an array of length N.

getRow

public double[] getRow(int n)
Returns a row of the matrix which represents the dictionary Legal range of the integer argument is 0 <= n < N. If argument is out of range a length K array of zeros should be returned.
The corresponding Matlab expression would be: D(n+1,:).

Overrides:
getRow in class MPDictionary
Parameters:
n - number of the row in dictionary, i.e. matrix D.

transposeMultiply

public double[] transposeMultiply(double[] x)
Multiplies the transposed dictionary D' by array x. D is the matrix representing the dictionary, each column is a dictionary element. An array y is returned.
The dimensions are: D is N×K, x is N×1, and y is K×1.
The corresponding mulitplication in Matlab would be: y = D'*x.

Overrides:
transposeMultiply in class MPDictionary
Parameters:
x - the signal (column vector) that is multiplied by the transposed dictionary.
Returns:
the results as an array of length K.

transposeMultiply

public void transposeMultiply(double[] x,
                              double[] y)
Multiplies the transposed dictionary D' by array x. D is the matrix representing the dictionary, each column is a dictionary element. An array y is returned.
The dimensions are: D is N×K, x is N×1, and y is K×1.
The corresponding mulitplication in Matlab would be: y = D'*x.

Overrides:
transposeMultiply in class MPDictionary
Parameters:
x - the signal (column vector) that is multiplied by the transposed dictionary.
y - the results as an array of length K.

multiply

public double[] multiply(double[] y)
Multiplies the dictionary D by array y. D is the matrix representing the dictionary, each column is a dictionary element. An array x is returned.
The dimensions are: D is N×K, x is N×1, and y is K×1.
The corresponding mulitplication in Matlab would be: x = D*y.

Overrides:
multiply in class MPDictionary
Parameters:
y - the coefficient vector that is multiplied by the dictionary.
Returns:
the results as an array of length N.

multiply

public void multiply(double[] y,
                     double[] x)
Multiplies the dictionary D by array y. D is the matrix representing the dictionary, each column is a dictionary element. An array x is returned.
The dimensions are: D is N×K, x is N×1, and y is K×1.
The corresponding mulitplication in Matlab would be: x = D*y.

Overrides:
multiply in class MPDictionary
Parameters:
y - the coefficient vector that is multiplied by the dictionary.
x - the results as an array of length N.