Simbody
|
Matrix characteristics are specifications of particular aspects of matrices:
Classes | |
class | SimTK::MatrixStructure |
Matrix "structure" refers to an inherent mathematical (or at least algorithmic) characteristic of the matrix rather than a storage strategy. More... | |
class | SimTK::MatrixStorage |
Matrix "storage" refers to the physical layout of data in the computer’s memory. More... | |
class | SimTK::MatrixOutline |
Matrix "outline" refers to the characteristic relationship between the number of rows and columns of a matrix, without necessarily specifying the absolute dimensions. More... | |
class | SimTK::MatrixCondition |
Matrix "condition" is a statement about the numerical characteristics of a Matrix. More... | |
class | SimTK::MatrixCharacter |
A MatrixCharacter is a set containing a value for each of the matrix characteristics except element type, which is part of the templatized declaration of a Matrix, Vector, or RowVector handle. More... | |
class | SimTK::MatrixCharacter::LapackFull |
Predefined MatrixCharacter for an ordinary Lapack-style full matrix of a particular dimension m x n (nrows X ncols). More... | |
class | SimTK::MatrixCharacter::Vector |
Predefined MatrixCharacter for an ordinary column vector of a particular size. More... | |
class | SimTK::MatrixCharacter::RowVector |
Predefined MatrixCharacter for an ordinary row vector of a particular size. More... | |
class | SimTK::MatrixCharacter::Mask |
This class collects masks of each characteristic type for representing sets of accceptable characteristics. More... | |
class | SimTK::MatrixCommitment |
A MatrixCommitment provides a set of acceptable matrix characteristics. More... | |
class | SimTK::MatrixCommitment::Vector |
This is the default commitment for a column vector. More... | |
class | SimTK::MatrixCommitment::RowVector |
This is the default commitment for a row vector. More... | |
class | SimTK::MatrixCommitment::Triangular |
This is the default commitment for a triangular matrix. More... | |
class | SimTK::MatrixCommitment::Symmetric |
This is the default commitment for a symmetric (*not* Hermitian) matrix. More... | |
class | SimTK::MatrixCommitment::Hermitian |
This is the default commitment for a Hermitian (*not* symmetric) matrix. More... | |
class | SimTK::MatrixCommitment::SkewSymmetric |
This is the default commitment for skew symmetric (*not* skew Hermitian) matrix. More... | |
class | SimTK::MatrixCommitment::SkewHermitian |
This is the default commitment for a skew Hermitian (*not* skew symmetric) matrix. More... | |
Functions | |
std::ostream & | SimTK::operator<< (std::ostream &o, const MatrixCharacter &) |
Output a textual description of a MatrixCharacter; handy for debugging. | |
std::ostream & | SimTK::operator<< (std::ostream &o, const MatrixCommitment &) |
Output a textual description of a MatrixCommitment; handy for debugging. |
Matrix characteristics are specifications of particular aspects of matrices:
Collectively, the set of values for the above properties is called a matrix character. A matrix character can be used to describe an existing matrix, or a character mask can be used to describe the range of characteristics that a matrix handle may support. The character mask describing the acceptable matrices for a matrix handle is called the handle's character commitment or just the handle commitment. The character describing an existing matrix is called the actual character of that matrix. Thus there are always two sets of characteristics associated with a matrix: the handle's commitment, and the actual character of the matrix to which the handle currently refers. The actual character must always satisfy the character commitment.
When a handle presents a view into another handle's data, it is the characteristics of the matrix as seen through the view that must satisfy the handle's character commitment. So for example, a view showing one column of a full matrix satisfies a "column" outline commitment.
Element type for a matrix handle is always determined at compile time via the template argument used in the declaration. For example, a matrix handle declared Matrix_<Vec3>
can only hold matrices whose elements are Vec3s
. Also, recall that Matrix
is an abbreviation for Matrix_<Real>
so that declaration commits the matrix handle to Real-element matrices. Element type is the only matrix characteristic for which no matrix handle can remain uncommitted. However, different handles can provide views of the same data through which that data is seen to contain different element types.
Each matrix characteristic other than sizes is represented by a class defining one or more enumerated types, where individual characteristics are assigned a single bit. Then an appropriate mask type (an unsigned integral type) is defined which can represent a set of allowable characteristics. The actual character of a matrix is represented via enumeration values; the character commitment is represented by the compatible masks. The operation of determining whether a particular actual character satisfies a handle commitment can then be performed very quickly via bitwise logical operations.
std::ostream& SimTK::operator<< | ( | std::ostream & | o, |
const MatrixCharacter & | |||
) |
Output a textual description of a MatrixCharacter; handy for debugging.
std::ostream& SimTK::operator<< | ( | std::ostream & | o, |
const MatrixCommitment & | |||
) |
Output a textual description of a MatrixCommitment; handy for debugging.