|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object MPDictionary mp.MPFlexMatrix
This class is a flexible matrix implementation of the MPDictionary superclass.
The dictionary D
may be represented as
1. As a matrix D
of size N×K
. Elements in columnwise
ordering, i.e. as a length K
array of column vectors,
each is a length N
array.
2. If the matrix is sparse and many of the zeros are in the beginning or the end of the
column vectors, i.e. band diagonal matrix, then a more
effective representation will be used.
The first representation is used in the class MPMatrix,
the second representation is used in the class MPBandMatrix.
Which representation to use is decided by the constructor, and it is hidden to the user.
The user should simply regard the dictionary as an N×K
matrix.
Constructor Summary | |
MPFlexMatrix(int iN,
int iK)
Constructs a N×K matrix or dictionary with random values. |
|
MPFlexMatrix(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. |
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 |
setColumn(int k,
double[] col)
Replace a column in the dictionary with the given column vector. |
void |
setValue(int n,
int k,
double val)
Set an entry (a value) in the dictionary. |
double |
singleInnerProduct(int k1,
int k2)
Calculates and returns the inner product of two dictionary elements. |
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 java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public MPFlexMatrix(int iN, int iK)
N×K
matrix or dictionary with random values.
iN
- length of dictionary elements, i.e. column vectors of the matrix.iK
- number of dictionary elements.public MPFlexMatrix(int iN, int iK, double[] val)
N×K
matrix or dictionary with values
from given one-dimensional array (which represents the matrix).
Length of the array should be N*K
.
iN
- length of dictionary elements, i.e. column vectors of the matrixiK
- number of dictionary elementsval
- the values (ordered by column, i.e. by dictionary elements)Method Detail |
public double getValue(int n, int k)
0 <= n < N
and 0 <= k < K
.
If any argument is outside legal range 0.0 is returned without error or warning.
n
- row number for the returned entry value.k
- column number for the returned entry value.public void setValue(int n, int k, double val)
0 <= n < N
and 0 <= k < K
.
If any argument is outside legal range nothing is done.
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.public void setColumn(int k, double[] col)
N
.
We should have: 0 <= k < K
.
If any argument is outside legal dimension or range nothing is done.
k
- column number for the column to be changed.col
- the value to be put into the given entry of the dictionary.public void addColumn(int k, double factor, double[] x)
0 <= k < K
. x = x+factor*D(:,k+1)
.
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
.public double innerProduct(int k1, int k2)
0 <= k1 < K
and 0 <= k2 < K
. k1
or k2
is out of range, 0.0 is returned.
k1
- number for the first dictionary element.k2
- number for the second dictionary element.public double singleInnerProduct(int k1, int k2)
0 <= k1 < K
and 0 <= k2 < K
. k1
or k2
is out of range, 0.0 is returned.
k1
- number for the first dictionary element.k2
- number for the second dictionary element.public void normalize()
public double[] transposeMultiply(double[] x)
D'
by array x
.
D
is the matrix representing the dictionary, each column is a dictionary
element. An array y
is returned. D
is
N×K
, x
is N×1
,
and y
is K×1
. y = D'*x
.
x
- the signal (column vector) that is multiplied by the transposed dictionary.
K
.public void transposeMultiply(double[] x, double[] y)
D'
by array x
.
D
is the matrix representing the dictionary, each column is a dictionary
element. An array y
is returned. D
is
N×K
, x
is N×1
,
and y
is K×1
. y = D'*x
.
x
- the signal (column vector) that is multiplied by the transposed dictionary.y
- the results as an array of length K
.public double[] multiply(double[] y)
D
by array y
.
D
is the matrix representing the dictionary,
each column is a dictionary element.
An array x
is returned. D
is
N×K
, x
is N×1
,
and y
is K×1
. x = D*y
.
y
- the coefficient vector that is multiplied by the dictionary.
N
.public void multiply(double[] y, double[] x)
D
by array y
.
D
is the matrix representing the dictionary,
each column is a dictionary element.
An array x
is returned. D
is
N×K
, x
is N×1
,
and y
is K×1
. x = D*y
.
y
- the coefficient vector that is multiplied by the dictionary.x
- the results as an array of length N
.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |