|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object comirva.audio.util.math.Matrix
public class Matrix
Jama = Java Matrix class.
The Java Matrix Class provides the fundamental operations of numerical linear algebra. Various constructors create Matrices from two dimensional arrays of double precision floating point numbers. Various "gets" and "sets" provide access to submatrices and matrix elements. Several methods implement basic matrix arithmetic, including matrix addition and multiplication, matrix norms, and element-by-element array operations. Methods for reading and printing matrices are also included. All the operations in this version of the Matrix Class involve real matrices. Complex matrices may be handled in a future version.
Five fundamental matrix decompositions, which consist of pairs or triples of matrices, permutation vectors, and the like, produce results in five decomposition classes. These decompositions are accessed by the Matrix class to compute solutions of simultaneous linear equations, determinants, inverses and other matrix functions. The five decompositions are:
double[][] vals = {{1.,2.,3},{4.,5.,6.},{7.,8.,10.}}; Matrix A = new Matrix(vals); Matrix b = Matrix.random(3,1); Matrix x = A.solve(b); Matrix r = A.times(x).minus(b); double rnorm = r.normInf();
Constructor Summary | |
---|---|
Matrix(double[][] A)
Construct a matrix from a 2-D array. |
|
Matrix(double[][] A,
int m,
int n)
Construct a matrix quickly without checking arguments. |
|
Matrix(double[] vals,
int m)
Construct a matrix from a one-dimensional packed array |
|
Matrix(int m,
int n)
Construct an m-by-n matrix of zeros. |
|
Matrix(int m,
int n,
double s)
Construct an m-by-n constant matrix. |
|
Matrix(Vector<double[]> rows,
boolean clone)
Construct a matrix from a Vector of double[] |
Method Summary | |
---|---|
Matrix |
abs()
returns a new Matrix object, where each value is set to the absolute value |
Matrix |
arrayLeftDivide(Matrix B)
Element-by-element left division, C = A. |
Matrix |
arrayLeftDivideEquals(Matrix B)
Element-by-element left division in place, A = A. |
Matrix |
arrayRightDivide(Matrix B)
Element-by-element right division, C = A. |
Matrix |
arrayRightDivideEquals(Matrix B)
Element-by-element right division in place, A = A. |
Matrix |
arrayTimes(Matrix B)
Element-by-element multiplication, C = A. |
Matrix |
arrayTimesEquals(Matrix B)
Element-by-element multiplication in place, A = A. |
CholeskyDecomposition |
chol()
Cholesky Decomposition |
Object |
clone()
Clone the Matrix object. |
double |
cond()
Matrix condition (2 norm) |
static Matrix |
constructWithCopy(double[][] A)
Construct a matrix from a copy of a 2-D array. |
Matrix |
copy()
Make a deep copy of a matrix |
Matrix |
cov()
Calculate the full covariance matrix. |
double |
det()
Matrix determinant |
void |
diffEquals()
X.diffEquals() calculates differences between adjacent columns of this matrix. |
EigenvalueDecomposition |
eig()
Eigenvalue Decomposition |
double |
get(int i,
int j)
Get a single element. |
double[][] |
getArray()
Access the internal two-dimensional array. |
double[][] |
getArrayCopy()
Copy the internal two-dimensional array. |
int |
getColumnDimension()
Get column dimension. |
double[] |
getColumnPackedCopy()
Make a one-dimensional column packed copy of the internal array. |
Matrix |
getMatrix(int[] r,
int[] c)
Get a submatrix. |
Matrix |
getMatrix(int[] r,
int j0,
int j1)
Get a submatrix. |
Matrix |
getMatrix(int i0,
int i1,
int[] c)
Get a submatrix. |
Matrix |
getMatrix(int i0,
int i1,
int j0,
int j1)
Get a submatrix. |
int |
getRowDimension()
Get row dimension. |
double[] |
getRowPackedCopy()
Make a one-dimensional row packed copy of the internal array. |
static Matrix |
identity(int m,
int n)
Generate identity matrix |
Matrix |
inverse()
Matrix inverse or pseudoinverse |
void |
logEquals()
X.logEquals() calculates the natural logarithem of each element of the matrix. |
LUDecomposition |
lu()
LU Decomposition |
Matrix |
mean(int dim)
Returns the mean values along the specified dimension. |
Matrix |
minus(Matrix B)
C = A - B |
Matrix |
minusEquals(Matrix B)
A = A - B |
double |
norm1()
One norm |
double |
norm2()
Two norm |
double |
normF()
Frobenius norm |
double |
normInf()
Infinity norm |
Matrix |
plus(Matrix B)
C = A + B |
Matrix |
plusEquals(Matrix B)
A = A + B |
Matrix |
pow(double exp)
X.powEquals() calculates the power of each element of the matrix. |
void |
powEquals(double exp)
X.powEquals() calculates the power of each element of the matrix. |
void |
print(int w,
int d)
Print the matrix to stdout. |
void |
print(NumberFormat format,
int width)
Print the matrix to stdout. |
void |
print(PrintWriter output,
int w,
int d)
Print the matrix to the output stream. |
void |
print(PrintWriter output,
NumberFormat format,
int width)
Print the matrix to the output stream. |
QRDecomposition |
qr()
QR Decomposition |
static Matrix |
random(int m,
int n)
Generate matrix with random elements |
int |
rank()
Matrix rank |
void |
read(InputStream in)
|
static Matrix |
readCSV(InputStream inputStream)
|
void |
readXML(XMLStreamReader parser)
Reads the xml representation of an object form the xml input stream. |
void |
set(int i,
int j,
double s)
Set a single element. |
void |
setMatrix(int[] r,
int[] c,
Matrix X)
Set a submatrix. |
void |
setMatrix(int[] r,
int j0,
int j1,
Matrix X)
Set a submatrix. |
void |
setMatrix(int i0,
int i1,
int[] c,
Matrix X)
Set a submatrix. |
void |
setMatrix(int i0,
int i1,
int j0,
int j1,
Matrix X)
Set a submatrix. |
Matrix |
solve(Matrix B)
Solve A*X = B |
Matrix |
solveTranspose(Matrix B)
Solve X*A = B, which is also A'*X' = B' |
double |
sum()
Returns the sum of the component of the matrix. |
SingularValueDecomposition |
svd()
Singular Value Decomposition |
void |
thrunkAtLowerBoundary(double value)
X.thrunkAtLowerBoundariy(). |
Matrix |
times(double s)
Multiply a matrix by a scalar, C = s*A |
Matrix |
times(Matrix B)
Linear algebraic matrix multiplication, A * B |
Matrix |
timesEquals(double s)
Multiply a matrix by a scalar in place, A = s*A |
Matrix |
timesTriangular(Matrix B)
Linear algebraic matrix multiplication, A * B B being a triangular matrix Note: Actually the matrix should be a column orienten, upper triangular matrix but use the row oriented, lower triangular matrix instead (transposed), because this is faster due to the easyer array access. |
double |
trace()
Matrix trace. |
Matrix |
transpose()
Matrix transpose. |
Matrix |
uminus()
Unary minus |
void |
write(OutputStream out)
|
void |
writeAscii(String filename)
Writes the Matrix to an ascii-textfile that can be read by Matlab. |
void |
writeXML(XMLStreamWriter writer)
Writes the xml representation of this object to the xml ouput stream. |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public Matrix(int m, int n)
m
- Number of rows.n
- Number of colums.public Matrix(int m, int n, double s)
m
- Number of rows.n
- Number of colums.s
- Fill the matrix with this scalar value.public Matrix(double[][] A)
A
- Two-dimensional array of doubles.
IllegalArgumentException
- All rows must have the same lengthconstructWithCopy(double[][])
public Matrix(double[][] A, int m, int n)
A
- Two-dimensional array of doubles.m
- Number of rows.n
- Number of colums.public Matrix(double[] vals, int m)
vals
- One-dimensional array of doubles, packed by columns (ala Fortran).m
- Number of rows.
IllegalArgumentException
- Array length must be a multiple of m.public Matrix(Vector<double[]> rows, boolean clone)
rows
- A VectorMethod Detail |
---|
public static Matrix constructWithCopy(double[][] A)
A
- Two-dimensional array of doubles.
IllegalArgumentException
- All rows must have the same lengthpublic Matrix copy()
public Object clone()
clone
in class Object
public double[][] getArray()
public double[][] getArrayCopy()
public double[] getColumnPackedCopy()
public double[] getRowPackedCopy()
public int getRowDimension()
public int getColumnDimension()
public double get(int i, int j)
i
- Row index.j
- Column index.
ArrayIndexOutOfBoundsException
public Matrix getMatrix(int i0, int i1, int j0, int j1)
i0
- Initial row indexi1
- Final row indexj0
- Initial column indexj1
- Final column index
ArrayIndexOutOfBoundsException
- Submatrix indicespublic Matrix getMatrix(int[] r, int[] c)
r
- Array of row indices.c
- Array of column indices.
ArrayIndexOutOfBoundsException
- Submatrix indicespublic Matrix getMatrix(int i0, int i1, int[] c)
i0
- Initial row indexi1
- Final row indexc
- Array of column indices.
ArrayIndexOutOfBoundsException
- Submatrix indicespublic Matrix getMatrix(int[] r, int j0, int j1)
r
- Array of row indices.j0
- Initial column indexj1
- Final column index
ArrayIndexOutOfBoundsException
- Submatrix indicespublic void set(int i, int j, double s)
i
- Row index.j
- Column index.s
- A(i,j).
ArrayIndexOutOfBoundsException
public void setMatrix(int i0, int i1, int j0, int j1, Matrix X)
i0
- Initial row indexi1
- Final row indexj0
- Initial column indexj1
- Final column indexX
- A(i0:i1,j0:j1)
ArrayIndexOutOfBoundsException
- Submatrix indicespublic void setMatrix(int[] r, int[] c, Matrix X)
r
- Array of row indices.c
- Array of column indices.X
- A(r(:),c(:))
ArrayIndexOutOfBoundsException
- Submatrix indicespublic void setMatrix(int[] r, int j0, int j1, Matrix X)
r
- Array of row indices.j0
- Initial column indexj1
- Final column indexX
- A(r(:),j0:j1)
ArrayIndexOutOfBoundsException
- Submatrix indicespublic void setMatrix(int i0, int i1, int[] c, Matrix X)
i0
- Initial row indexi1
- Final row indexc
- Array of column indices.X
- A(i0:i1,c(:))
ArrayIndexOutOfBoundsException
- Submatrix indicespublic Matrix transpose()
public double norm1()
public double norm2()
public double normInf()
public double normF()
public Matrix uminus()
public Matrix plus(Matrix B)
B
- another matrix
public Matrix plusEquals(Matrix B)
B
- another matrix
public Matrix minus(Matrix B)
B
- another matrix
public Matrix minusEquals(Matrix B)
B
- another matrix
public Matrix arrayTimes(Matrix B)
B
- another matrix
public Matrix arrayTimesEquals(Matrix B)
B
- another matrix
public Matrix arrayRightDivide(Matrix B)
B
- another matrix
public Matrix arrayRightDivideEquals(Matrix B)
B
- another matrix
public Matrix arrayLeftDivide(Matrix B)
B
- another matrix
public Matrix arrayLeftDivideEquals(Matrix B)
B
- another matrix
public Matrix times(double s)
s
- scalar
public Matrix timesEquals(double s)
s
- scalar
public Matrix times(Matrix B)
B
- another matrix
IllegalArgumentException
- Matrix inner dimensions must agree.public Matrix timesTriangular(Matrix B)
B
- another matrix
IllegalArgumentException
- Matrix inner dimensions must agree.public void diffEquals()
public void logEquals()
public void powEquals(double exp)
public Matrix pow(double exp)
public void thrunkAtLowerBoundary(double value)
public LUDecomposition lu()
LUDecomposition
public QRDecomposition qr()
QRDecomposition
public CholeskyDecomposition chol()
CholeskyDecomposition
public SingularValueDecomposition svd()
SingularValueDecomposition
public EigenvalueDecomposition eig()
EigenvalueDecomposition
public Matrix solve(Matrix B)
B
- right hand side
public Matrix solveTranspose(Matrix B)
B
- right hand side
public Matrix inverse()
public double det()
public int rank()
public double cond()
public double trace()
public static Matrix random(int m, int n)
m
- Number of rows.n
- Number of colums.
public static Matrix identity(int m, int n)
m
- Number of rows.n
- Number of colums.
public void print(int w, int d)
w
- Column width.d
- Number of digits after the decimal.public void print(PrintWriter output, int w, int d)
output
- Output stream.w
- Column width.d
- Number of digits after the decimal.public void print(NumberFormat format, int width)
format
- A Formatting object for individual elements.width
- Field width for each column.DecimalFormat.setDecimalFormatSymbols(java.text.DecimalFormatSymbols)
public void print(PrintWriter output, NumberFormat format, int width)
output
- the output stream.format
- A formatting object to format the matrix elementswidth
- Column width.DecimalFormat.setDecimalFormatSymbols(java.text.DecimalFormatSymbols)
public void write(OutputStream out) throws IOException
IOException
public static Matrix readCSV(InputStream inputStream) throws IOException
IOException
public void read(InputStream in) throws IOException
IOException
public void writeXML(XMLStreamWriter writer) throws IOException, XMLStreamException
writeXML()
method
results in one xml element in the output stream.
writeXML
in interface XMLSerializable
writer
- XMLStreamWriter the xml output stream
IOException
- raised, if there are any io troubles
XMLStreamException
- raised, if there are any parsing errorspublic void readXML(XMLStreamReader parser) throws IOException, XMLStreamException
readXML()
starts parsing by
checking the start tag of this object and finishes parsing by checking the
end tag. The caller has to ensure, that at method entry the current token
is the start tag. After the method call it's the callers responsibility to
move from the end tag to the next token.
readXML
in interface XMLSerializable
parser
- XMLStreamReader the xml input stream
IOException
- raised, if there are any io troubles
XMLStreamException
- raised, if there are any parsing errorspublic Matrix mean(int dim)
dim
- If 1, then the mean of each column is returned in a row
vector. If 2, then the mean of each row is returned in a
column vector.
public Matrix cov()
public double sum()
public Matrix abs()
public void writeAscii(String filename) throws IllegalArgumentException
filename
- the name of the ascii file to create, e.g. "C:\\temp\\matrix.ascii"
IllegalArgumentException
- if there is a problem with the filename
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |