All Packages Class Hierarchy This Package Previous Next Index
Class matrix.MatrixF
java.lang.Object
|
+----matrix.MatrixF
- public final class MatrixF
- extends Object
- implements Parsable
A MatrixF is a matrix where each element is a float
(a vector if it has only 1 row or column)
that can perform normal matrix/vector operations. A MatrixF is
actually just a view on a subset of a 1D array, so a particular
array might have two different MatrixF objects pointing to it,
one of which treats it as a 2D matrix, and one of which treats
it as a 1D vector. Also, a MatrixF may view part of an array,
so it is possible to define a matrix or vector that is a concatenation
of smaller matrices or vectors. The constructor automatically
creates the 1D array and the MatrixF object pointing to it, unless
an existing array is passed in. The
submatrix method returns another MatrixF object that points to the
same array. The toVector method returns another MatrixF object that
points to the same array and treats it as a single vector (column matrix).
This code is (c) 1996,1997 Leemon Baird
<leemon@cs.cmu.edu>,
http://www.cs.cmu.edu/~baird
The source and object code may be redistributed freely.
If the code is modified, please state so in the comments.
- Version:
- 1.08, 3 May 97
- Author:
- Leemon Baird, Mance Harmon, Scott Weaver
-
data
- The 1D array that holds the data for this MatrixF, and perhaps others too.
-
first
- element of array holding upper-left corner of matrix
-
last
- element of array holding lower-right corner of matrix
-
nativeCodeLoaded
- Is native code loaded?
-
nCols
- # columns in the matrix
-
newCol
- amount to add to an index to go from past the end of one column to top of next
-
newRow
- amount to add to an index to go from past the end of one row to start of next
-
next
- amount to add to index to get next element of this vector
-
nextCol
- amount to add to an index to move to the next column
-
nextRow
- amount to add to an index to move to the next row
-
nRows
- # rows in the matrix
-
restartCol
- amount to add to an index to go from past the end of one column back to its start
-
restartRow
- amount to add to an index to go from past the end of one row back to its start
-
size
- # elements in this vector (-1 if not a vector)
-
useNativeCode
- Use the native code?
-
MatrixF()
- Create a new scalar (a 1x1 matrix)
-
MatrixF(float[])
- View an existing array as a 1D vector (column matrix)
-
MatrixF(float[], int, int)
- View an existing array as a 2D matrix with size (rows,cols)
All elements in the same row are adjacent in the array.
-
MatrixF(float[], int, int, int, int, int)
- Directly set 6 data fields in an object.
-
MatrixF(int)
- Create a new column vector with n elements
-
MatrixF(int, int)
- Create a new 2D matrix with size (rows,cols)
-
add(float)
- each_element_of_this += k, return this
-
add(MatrixF)
- this=this+m, return this
-
addMult(float, MatrixF)
- this=this+k*m, return this.
-
BNF(int)
-
-
clone()
- Clone this object.
-
diag(float)
- replaces all elements of this with zeros, except for all k's
on the diagonal.
-
diag(MatrixF)
- replaces all elements of this with zeros, except for the
diagonal which will be copied from the elements of row or column
vector v.
-
dot(MatrixF)
- Return dot product of this vector with vector v.
-
duplicate()
- Duplicate this object/associated data array and return a
pointer to the copy.
-
equalEls(MatrixF)
- Return whether this and m are the same size and shape and have the same
numbers for corresponding elements.
-
getParameters(int)
- Return a parameter array if BNF(), parse(), and unparse() are to be automated, null otherwise.
-
initialize(int)
- Initialize, either partially or completely.
-
MatToScalar()
- return the only element of a 1x1 MatrixF object
-
mult(float)
- this=this*k, return this.
-
mult(MatrixF, MatrixF)
- this=x*y, return this.
-
multAdd(float, MatrixF)
- this=this*k+m, return this.
-
multColMat(MatrixF, int, MatrixF)
- this=((col)th column, zero based, of x)*v, return this
(which will be a matrix).
-
multDiag(MatrixF, MatrixF)
- this=diag(v)*y, return this.
-
multEl(MatrixF)
- multiply corresponding elements of this matrix and matrix m,
store answer in this matrix, and return this matrix
-
multK(float, MatrixF)
- this=k*m, return this.
-
multMatCol(MatrixF, MatrixF, int)
- this=x*((col)th column, zero based, of y), return this
(which will be a column).
-
parse(Parser, int)
- Parse the input file to get the parameters for this object.
-
replace(MatrixF)
- this=m, return this.
-
set(int, float)
- set the nth element of a 1D vector (row or column vector)
-
set(int, int, float)
- set a particular element of a matrix to a particular value
-
setRandom(float, float, Random)
- set every element of this matrix to a random number between
min and max using the random number generator r.
-
sub(MatrixF)
- this=this-m, return this
-
subFrom(MatrixF)
- this=m-this, return this
-
submatrix(int, int, int)
- Return a new MatrixF that views some of the elements of this vector
(elements n to n+rows*cols-1 inclusive, zero based)
as a matrix of shape (rows,cols).
-
submatrix(int, int, int, int)
- Return a new MatrixF that is a contiguous, rectangular subset of this one.
-
toString()
- a rectangle of numbers (using newlines) representing the matrix
-
toString(boolean)
- All fields plus the rectangle
-
toVector()
- Return a new MatrixF object that is a single vector (column matrix)
pointing to the entire data array of this object.
-
transpose()
- Transpose this matrix or vector, and return this.
-
unparse(Unparser, int)
- Output a description of this object that can be parsed with parse().
-
useNative(boolean)
- Stops using native code if parameter is false.
-
val(int)
- return the nth element of a 1D vector (column or row vector)
-
val(int, int)
- return a particular element of a matrix
nativeCodeLoaded
public static boolean nativeCodeLoaded
- Is native code loaded?
useNativeCode
public static boolean useNativeCode
- Use the native code?
data
public float data[]
- The 1D array that holds the data for this MatrixF, and perhaps others too.
nRows
public int nRows
- # rows in the matrix
nCols
public int nCols
- # columns in the matrix
nextRow
public int nextRow
- amount to add to an index to move to the next row
nextCol
public int nextCol
- amount to add to an index to move to the next column
first
public int first
- element of array holding upper-left corner of matrix
last
public int last
- element of array holding lower-right corner of matrix
newRow
public int newRow
- amount to add to an index to go from past the end of one row to start of next
newCol
public int newCol
- amount to add to an index to go from past the end of one column to top of next
restartRow
public int restartRow
- amount to add to an index to go from past the end of one row back to its start
restartCol
public int restartCol
- amount to add to an index to go from past the end of one column back to its start
size
public int size
- # elements in this vector (-1 if not a vector)
next
public int next
- amount to add to index to get next element of this vector
MatrixF
public MatrixF()
- Create a new scalar (a 1x1 matrix)
MatrixF
public MatrixF(int n)
- Create a new column vector with n elements
MatrixF
public MatrixF(int rows,
int cols)
- Create a new 2D matrix with size (rows,cols)
MatrixF
public MatrixF(float fArray[])
- View an existing array as a 1D vector (column matrix)
MatrixF
public MatrixF(float fArray[],
int rows,
int cols) throws MatrixException
- View an existing array as a 2D matrix with size (rows,cols)
All elements in the same row are adjacent in the array.
- Throws: MatrixException
- array wasn't same size as matrix
MatrixF
public MatrixF(float data[],
int first,
int nRows,
int nCols,
int nextRow,
int nextCol)
- Directly set 6 data fields in an object. Avoid using this if possible.
initialize
public void initialize(int level)
- Initialize, either partially or completely.
- See Also:
- initialize
useNative
public void useNative(boolean useIt)
- Stops using native code if parameter is false. If parameter is true, it
will use native code if available. The default for this class is as if
useNative(true) was called initially.
toVector
public MatrixF toVector()
- Return a new MatrixF object that is a single vector (column matrix)
pointing to the entire data array of this object. If this object
represents only a subset of that array, the vector returned will
still represent the entire array, not the subset.
submatrix
public MatrixF submatrix(int row,
int col,
int rows,
int cols) throws MatrixException
- Return a new MatrixF that is a contiguous, rectangular subset of this one. * The data in the matrix is not copied.
The MatrixF object returned contains a pointer to the same data.
The new matrix has shape (rows,cols), and its (0,0) element is
element (row,col) in the source matrix.
- Throws: MatrixException
- if called on a 2D matrix, or index out of bounds
submatrix
public MatrixF submatrix(int n,
int rows,
int cols) throws MatrixException
- Return a new MatrixF that views some of the elements of this vector
(elements n to n+rows*cols-1 inclusive, zero based)
as a matrix of shape (rows,cols).
- Throws: MatrixException
- if this is not a vector or has too few elements
MatToScalar
public final float MatToScalar() throws MatrixException
- return the only element of a 1x1 MatrixF object
- Throws: MatrixException
- if called if not 1x1
val
public final float val(int n) throws MatrixException
- return the nth element of a 1D vector (column or row vector)
- Throws: MatrixException
- if called on a 2D matrix, or index out of bounds
val
public final float val(int row,
int col) throws MatrixException
- return a particular element of a matrix
- Throws: MatrixException
- if index out of bounds
set
public final void set(int n,
float val) throws MatrixException
- set the nth element of a 1D vector (row or column vector)
- Throws: MatrixException
- if called on a 2D matrix, or index out of bounds
set
public final void set(int row,
int col,
float val) throws MatrixException
- set a particular element of a matrix to a particular value
- Throws: MatrixException
- if index out of bounds
transpose
public MatrixF transpose()
- Transpose this matrix or vector, and return this.
duplicate
public final MatrixF duplicate()
- Duplicate this object/associated data array and return a
pointer to the copy.
clone
public Object clone()
- Clone this object. The data array it points to is not cloned.
- Overrides:
- clone in class Object
getParameters
public Object[][] getParameters(int lang)
- Return a parameter array if BNF(), parse(), and unparse() are to be automated, null otherwise.
- See Also:
- getParameters
BNF
public String BNF(int lang)
unparse
public void unparse(Unparser u,
int lang)
- Output a description of this object that can be parsed with parse().
- See Also:
- Parsable
parse
public Object parse(Parser p,
int lang) throws ParserException
- Parse the input file to get the parameters for this object.
- Throws: ParserException
- parser didn't find the required token
toString
public String toString()
- a rectangle of numbers (using newlines) representing the matrix
- Overrides:
- toString in class Object
toString
public String toString(boolean full)
- All fields plus the rectangle
setRandom
public MatrixF setRandom(float min,
float max,
Random r)
- set every element of this matrix to a random number between
min and max using the random number generator r.
equalEls
public final boolean equalEls(MatrixF m)
- Return whether this and m are the same size and shape and have the same
numbers for corresponding elements. Two matrices are still equal
if their data is stored in different arrays, and if corresponding
elements uparse to different symbolic expressions, as long as the
numeric values are the same.
add
public final MatrixF add(MatrixF m) throws MatrixException
- this=this+m, return this
- Throws: MatrixException
- if matrices are different sizes
sub
public final MatrixF sub(MatrixF m) throws MatrixException
- this=this-m, return this
- Throws: MatrixException
- if matrices are different shapes
subFrom
public final MatrixF subFrom(MatrixF m) throws MatrixException
- this=m-this, return this
- Throws: MatrixException
- if matrices are different shapes
multAdd
public final MatrixF multAdd(float k,
MatrixF m) throws MatrixException
- this=this*k+m, return this.
- Throws: MatrixException
- if matrices are different sizes
addMult
public final MatrixF addMult(float k,
MatrixF m) throws MatrixException
- this=this+k*m, return this.
- Throws: MatrixException
- if matrices are different sizes
dot
public final float dot(MatrixF v) throws MatrixException
- Return dot product of this vector with vector v.
Both are row vectors, or both columns, or one of each.
- Throws: MatrixException
- different # elements, or 1 isn't a vector
replace
public final MatrixF replace(MatrixF m) throws MatrixException
- this=m, return this.
Replace this object's data with the data of matrix m,
then returns this. This copies the data in the array itself,
not just pointers to it.
- Throws: MatrixException
- if matricies are different shapes
add
public final MatrixF add(float k)
- each_element_of_this += k, return this
diag
public final MatrixF diag(float k) throws MatrixException
- replaces all elements of this with zeros, except for all k's
on the diagonal. this must be square.
- Throws: MatrixException
- if matrix is not square
diag
public final MatrixF diag(MatrixF v) throws MatrixException
- replaces all elements of this with zeros, except for the
diagonal which will be copied from the elements of row or column
vector v. this must be square.
- Throws: MatrixException
- if matrix is not square or v is not a vector of that size
mult
public final MatrixF mult(MatrixF x,
MatrixF y) throws MatrixException
- this=x*y, return this.
x and y are matrices of appropriate shapes.
This object must already be the right shape to hold the answer.
Returns pointer to this object.
- Throws: MatrixException
- if shapes are wrong
mult
public final MatrixF mult(float k)
- this=this*k, return this. If k=0, then it sets this equal to all zeros,
even if this contains some infinites or Not-a-Numbers.
multK
public final MatrixF multK(float k,
MatrixF m) throws MatrixException
- this=k*m, return this.
- Throws: MatrixException
- if this and m are different sizes
multEl
public final MatrixF multEl(MatrixF m) throws MatrixException
- multiply corresponding elements of this matrix and matrix m,
store answer in this matrix, and return this matrix
- Throws: MatrixException
- if this and m are different sizes
multColMat
public final MatrixF multColMat(MatrixF x,
int col,
MatrixF v) throws MatrixException
- this=((col)th column, zero based, of x)*v, return this
(which will be a matrix).
x is a matrix and v is a row vector.
This object must already be the right shape to hold the answer
(row(x) by col(v)).
Returns pointer to this object.
- Throws: MatrixException
- if shapes are wrong
multMatCol
public final MatrixF multMatCol(MatrixF x,
MatrixF y,
int col) throws MatrixException
- this=x*((col)th column, zero based, of y), return this
(which will be a column).
x and y are matrices of appropriate shapes.
This object must already be the right shape to hold the answer.
Returns pointer to this object.
- Throws: MatrixException
- if shapes are wrong
multDiag
public final MatrixF multDiag(MatrixF v,
MatrixF y) throws MatrixException
- this=diag(v)*y, return this.
diag(v) is a diagonal matrix whose diagonal
is the elements of the column or row vector v.
y and this are matrices of the appropriate shape.
this must already be the right shape to hold the answer.
Returns pointer to this object.
- Throws: MatrixException
- if shapes are wrong
All Packages Class Hierarchy This Package Previous Next Index