IGLib  1.7.2
The IGLib base library for development of numerical, technical and business applications.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros
IG.Num.Matrix Class Reference

Real matrix class. Some operations are performed by the MathNet.Numerics.LinearAlgebra.Matrix class. More...

+ Inheritance diagram for IG.Num.Matrix:
+ Collaboration diagram for IG.Num.Matrix:

Public Member Functions

 Matrix (IMatrix A)
 Constructs a matrix from another matrix by copying the provided matrix components to the internal data structure. More...
 
 Matrix (MatrixBase_MathNetNumerics A)
 Construct a matrix from MathNet.Numerics.LinearAlgebra.Matrix. Only a reference of A is copied. More...
 
 Matrix (int d1, int d2)
 Constructs an d1*d2 - dimensional matrix of zeros. More...
 
 Matrix (int d1, int d2, double val)
 Construct an numrows-by-d2 constant matrix with specified value for all elements. More...
 
 Matrix (IVector diagonal)
 Constructs a square diagonal matrix with specified diagonal values. More...
 
 Matrix (int dim, double elementValue)
 Constructs a d*d square matrix with specified diagonal value. More...
 
 Matrix (double[][] A)
 Constructs a matrix from a jagged 2-D array, directly using the provided array as internal data structure. More...
 
 Matrix (double[,] elementTable)
 Constructs a matrix from a 2-D array by deep-copying the provided array to the internal data structure. More...
 
 Matrix (IList< double > _matrixElements, int numRows, int numColumns=0)
 Construct a matrix from a one-dimensional packed array. More...
 
 Matrix (double[] _matrixElements, int numRows, int numColumns=0)
 Construct a matrix from a one-dimensional packed array. More...
 
Matrix_MathNetNumerics GetCopyMathNetNumerics ()
 Creates and returns a newly allocated MathNet.Numerics representation of the current matrix. More...
 
Matrix GetCopyThis ()
 Creates and returns a copy of the current matrix. More...
 
override MatrixBase GetCopyBase ()
 Creates and returns a copy of the current matrix. More...
 
virtual Matrix GetNewThis (int rowCount, int columnCount)
 Creates and returns a new matrix with the specified dimensions, and of the same type as the current matrix. More...
 
override MatrixBase GetNewBase (int rowCount, int columnCount)
 Creates and returns a new matrix with the specified dimensions, and of the same type as the current matrix. More...
 
Matrix GetNewThis ()
 Creates and returns a new matrix with the same dimensions and of the same type as the current matrix. More...
 
override MatrixBase GetNewBase ()
 Creates and returns a new matrix with the same dimensions and of the same type as the current matrix. More...
 
Vector GetNewVectorThis (int length)
 Creates and returns a new vector with the specified dimension, and of the type that is consistent with the type of the current matrix. More...
 
override VectorBase GetNewVectorBase (int length)
 Creates and returns a new vector with the specified dimension, and of the type that is consistent with the type of the current matrix. More...
 
virtual string ToStringBase ()
 Returns a string representation of this vector in a readable form. More...
 
override int GetHashCode ()
 Returns the hashRet code (hashRet function) of the current matrix. More...
 
override bool Equals (Object obj)
 Returns a value indicating whether the specified object is equal to the current matrix. More...
 
- Public Member Functions inherited from IG.Num.MatrixBase
virtual IMatrix GetCopy ()
 Creates and returns a copy of the current matrix. More...
 
virtual IMatrix GetNew (int rowCount, int columnCount)
 Creates and returns a new matrix with the specified dimensions, and of the same type as the current matrix. More...
 
virtual IMatrix GetNew ()
 Creates and returns a new matrix with the same dimensions and of the same type as the current matrix. More...
 
virtual IVector GetNewVector (int length)
 Creates and returns a new vector with the specified dimension, and of the type that is consistent with the type of the current vector. More...
 
virtual double[,] ToArray ()
 Creates and returns a rectangular 2D array that contains a component-wise copy of the matrix. More...
 
virtual double[][] ToJaggedArray ()
 Creates and returns a jagged 2D array that contains a component-wise copy of the matrix. More...
 
virtual int Index (int row, int column)
 Calculates and returns flat index corresponding to the specified row and column indices of the current matrix. More...
 
virtual void Indices (int flatIndex, out int row, out int column)
 Returns (through output arguments) row and column indices corresponding to the specified flat index in the current matrix. More...
 
virtual void SetZero ()
 Sets all components of the current matrix to 0. More...
 
virtual void SetConstant (double elementValue)
 Sets all components of the current matrix to the specified value. More...
 
virtual void SetIdentity ()
 Sets the current matrix to identity matrix. WARNING: Exception is thrown if a matrix is not square. For nonsquare matrices, use SetDiagonal(1.0)! More...
 
virtual void SetRandom ()
 Sets the current matrix such that it contains random elements on the interval (0,1]. More...
 
virtual void SetRandom (IRandomGenerator rnd)
 Sets the current matrix such that it contains random elements on the interval (0,1]. More...
 
virtual void SetDiagonal (double diagonalElement)
 Sets the current matrix to the diagonal matrix with all diagonal elements equal to the specified value. Matrix does not need to be a square matrix. More...
 
virtual void SetDiagonal (IVector diagonal)
 Sets the current matrix to the diagonal matrix with diagonal element specified by a vector. More...
 
virtual bool IsSquare ()
 Returns true if the current matrix is a square matrix, and false if not. More...
 
virtual bool IsSymmetric ()
 Returns true if the current matrix is symmetric, and false if not. If the matrix is not a square matrix then false is returned. More...
 
virtual bool IsSymmetric (double relativeRMSTolerance=0.0)
 Returns true if the specified matrix is symmetric within some tolerance, and false if not. If the matrix is null then false is returned. More...
 
virtual void Negate ()
 Negates the current matrix. More...
 
virtual void Transpose ()
 Transposes the current matrix. WARNING: this operation can only be done on square matrices! More...
 
override int GetHashCode ()
 Returns the hashRet code (hashRet function) of the current matrix. More...
 
override bool Equals (Object obj)
 Returns a value indicating whether the specified object is equal to the current matrix. More...
 
int GetHashFunctionInt ()
 Returns an integer valued hashRet function of the current matrix object. More...
 
string GetHashFunctionString ()
 Returns a string valued hashRet function of the current matrix object. More...
 
override string ToString ()
 Returns string representation of the current matrix in the standard IGLib form. Rows and elements are printed in comma separated lists in curly brackets. More...
 
virtual string ToStringReadable (int accuracy=4, int padding=8)
 Returns a readable an easily string form of a matrix, accuracy and padding can be set. More...
 
virtual string ToStringNewlines ()
 Returns a string representation of this matrix with newlines inserted after each row. Rows and elements are printed in comma separated lists in curly brackets. More...
 
virtual string ToStringNewlines (string elementFormat)
 Returns a string representation of this matrix with newlines inserted after each row, with the specified format for elements of the matrix. Rows and elements are printed in comma separated lists in curly brackets. More...
 
virtual string ToStringMath ()
 Returns string representation of the current matrix in the standard IGLib form (Mathematica-like format but with C representation of numbers). Rows and elements are printed in comma separated lists in curly brackets. More...
 
virtual string ToString (string elementFormat)
 Returns a string representation of the current matrix in a standard IGLib form (Mathematica-like format but with C representation of numbers), with the specified format for elements of the matrix. More...
 
virtual string ToStringMath (string elementFormat)
 Returns a string representation of the current matrix in a standard IGLib form (Mathematica-like format but with C representation of numbers), with the specified format for elements of the matrix. More...
 

Static Public Member Functions

static Matrix Create (double[][] A)
 Constructs a matrix from a copy of a 2-D array by deep-copy. More...
 
static Matrix Create (double[,] A)
 Constructs a matrix from a copy of a 2-D array by deep-copy. More...
 
static Matrix CreateFromColumns (IList< Vector > columnVectors)
 Construct a complex matrix from a set of real column vectors. More...
 
static Matrix CreateFromRows (IList< Vector > rowVectors)
 Construct a complex matrix from a set of real row vectors. More...
 
static Matrix Identity (int d1, int d2)
 Creates a d1*d2 identity matrix. More...
 
static Matrix Identity (int d)
 Creates a square identity matrix of dimension d*d. More...
 
static Matrix Zeros (int d1, int d2)
 Creates a d1*d2 matrix filled with 0. More...
 
static Matrix Zeros (int d)
 creates a square d*d matrix filled with 0. More...
 
static Matrix Ones (int d1, int d2)
 Creates a d1*d2 matrix filled with 1. More...
 
static Matrix Ones (int d)
 Generates a square d*d matrix filled with 1. More...
 
static Matrix Diagonal (IVector< double > diagonalVector, int d1, int d2)
 Creates a new diagonal d1*d2 matrix based on the diagonal vector. More...
 
static Matrix Diagonal (IVector< double > diagonalVector)
 Creates a new square diagonal matrix based on the diagonal vector. More...
 
static Matrix Random (int d1, int d2)
 Generates a d1*d2 matrix with uniformly distributed random elements. More...
 
static Matrix Random (int d1, int d2, IRandomGenerator rnd)
 Creates and returns a d1*d2 matrix with uniformly distributed random elements. More...
 
static Matrix Random (int d)
 Generates a d*d square matrix with standard-distributed random elements. More...
 
static void Copy (Matrix a, Matrix result)
 Copies components of a matrix to another matrix. WARNING: dimensions of the specified result matrix must match dimensions of the original matrix. REMARK: This method is implemented because it is more efficient than the corresponding method in MatrixBase (due to matched types). More...
 
static void Copy (Matrix a, ref Matrix result)
 Copies components of a matrix to another matrix. Resulting matrix is allocated or reallocated if necessary. REMARK: This method is implemented because it is more efficient than the corresponding method in MatrixBase (due to matched types). More...
 
static void KroneckerProduct (Matrix m1, Matrix m2, Matrix result)
 Kronecker product, A(m*n)*B(p*q)=C(mp*nq) Result is a block matrix with as many blocks as there are elements of the first matrix, each block being a product of the second matrix by an element of the first matrix. Both operands must be defined (non-null). More...
 
static void KroneckerMultiply (Matrix m1, Matrix m2, Matrix result)
 Kronecker or tensor product, A(m*n)*B(p*q)=C(mp*nq) Result is a block matrix with as many blocks as there are elements of the first matrix, each block being a product of the second matrix by an element of the first matrix. Both operands must be defined (non-null). More...
 
static void TensorMultiply (Matrix m1, Matrix m2, Matrix result)
 Kronecker or tensor product, A(m*n)*B(p*q)=C(mp*nq) Result is a block matrix with as many blocks as there are elements of the first matrix, each block being a product of the second matrix by an element of the first matrix. Both operands must be defined (non-null). More...
 
static new void TestStaticMethodSpecific ()
 A test method, just prints some output. More...
 
- Static Public Member Functions inherited from IG.Num.MatrixBase
static int Index (int dim1, int dim2, int row, int column)
 Returns flat index corresponding to the specified row and column indices of a matrix with specified dimensions. More...
 
static int Index (IMatrix mat, int row, int column)
 Calculates and returns flat index corresponding to the specified row and column indices of the specified matrix. More...
 
static void Indices (int dim1, int dim2, int flatIndex, out int row, out int column)
 Returns (through output arguments) row and column indices corresponding to the specified flat index in a matrix with the specified dimensions. More...
 
static void Indices (IMatrix mat, int flatIndex, out int row, out int column)
 Returns (through output arguments) row and column indices corresponding to the specified flat index in the specified matrix. More...
 
static void SetZero (IMatrix mat)
 Sets all components of the specified matrix to 0. More...
 
static void SetConstant (IMatrix mat, double elementValue)
 Sets all components of the specified matrix to the specified value. More...
 
static void SetIdentity (IMatrix mat)
 Sets the specified matrix to identity matrix. WARNING: Works only for square matrices (exception is thrown if matrix is not square). For nonsquare matrices, use SetDiagonal(1.0)! More...
 
static void SetDiagonal (IMatrix mat, IVector diagonal)
 Sets the current matrix to the diagonal matrix with diagonal element specified by a vector. More...
 
static void SetDiagonal (IMatrix mat, double diagonalElement)
 Sets the current matrix to the diagonal matrix with all diagonal elements equal to the specified value. Matrix does not need to be a square matrix. More...
 
static void SetRandom (IMatrix mat)
 Sets the specified matrix such that it contains random elements on the interval (0,1]. More...
 
static void SetRandom (IMatrix mat, IRandomGenerator rnd=null)
 Sets the current matrix such that it contains random elements on the interval (0,1]. More...
 
static void SetRandomSymmetric (IMatrix mat)
 Sets the specified matrix such that it is symmetric and contains random elements on the interval (0,1]. More...
 
static void SetRandomSymmetric (IMatrix mat, IRandomGenerator rnd)
 Sets the specified matrix such that it is symmetric and contains random elements on the interval (0,1]. More...
 
static void SetRandomAntiSymmetric (IMatrix mat)
 Sets the specified matrix such that it is antisymmetric and contains random elements on the interval (0,1]. More...
 
static void SetRandomAntiSymmetric (IMatrix mat, IRandomGenerator rnd)
 Sets the specified matrix such that it is antisymmetric and contains random elements on the interval (0,1]. More...
 
static void SetRandomLowerTriangular (IMatrix mat)
 Sets the specified matrix such that it is lower triangular and contains random elements on the interval (0,1]. More...
 
static void SetRandomLowerTriangular (IMatrix mat, IRandomGenerator rnd)
 Sets the specified matrix such that it is lower triangular and contains random elements on the interval (0,1]. More...
 
static void SetRandomUpperTriangular (IMatrix mat)
 Sets the specified matrix such that it is upper triangular and contains random elements on the interval (0,1]. More...
 
static void SetRandomUpperTriangular (IMatrix mat, IRandomGenerator rnd)
 Sets the specified matrix such that it is upper triangular and contains random elements on the interval (0,1]. More...
 
static void SetRandomSymmetricPositiveDefinite (IMatrix mat)
 Sets the specified matrix such that it is positive definite and contains random elements on the interval (0,1]. More...
 
static void SetRandomSymmetricPositiveDefinite (IMatrix mat, IRandomGenerator rnd)
 Sets the specified matrix such that it is positive definite and contains random elements. More...
 
static void SetRandomPositiveDiagonallyDominant (IMatrix mat, IRandomGenerator rnd=null, double dominancyFactor=100.0)
 Sets the specified matrix such that it is has random elements and is diagonally dominant with positive diagonal elements, i.e. any diagonal element is greater by absolute value than sum of absolute values of nondiagonal elements in the corresponding column. More...
 
static void SetRandomPositiveDiagonallyDominant (IMatrix mat, double dominancyFactor)
 Sets the specified matrix such that it is has random elements and is diagonally dominant with positive diagonal elements, i.e. any diagonal element is greater by absolute value than sum of absolute values of nondiagonal elements in the corresponding column. More...
 
static void SetRandomPositiveDiagonallyDominantSymmetric (IMatrix mat, IRandomGenerator rnd=null, double dominancyFactor=100.0)
 Sets the specified matrix such that it is has random elements and is symmetric diagonally dominant with positive diagonal elements, i.e. any diagonal element is greater by absolute value than sum of absolute values of nondiagonal elements in the corresponding column. More...
 
static void SetRandomPositiveDiagonallyDominantSymmetric (IMatrix mat, double dominancyFactor)
 Sets the specified matrix such that it is has random elements and is symmetric diagonally dominant with positive diagonal elements, i.e. any diagonal element is greater by absolute value than sum of absolute values of nondiagonal elements in the corresponding column. More...
 
static double SetRandomInvertible (IMatrix mat, IRandomGenerator rnd=null)
 Sets the specified QUADRATIC matrix such that it is has random elements and is nonsingular. More...
 
static double SetRandomPositiveDefiniteSymmetric (IMatrix mat, IRandomGenerator rnd=null)
 Sets the specified QUADRATIC matrix such that it is has random elements and is a symmetric positive definite matrix. More...
 
static bool IsSquare (IMatrix mat)
 Returns true if the specified matrix is a square matrix, and false if not. If the matrix is null then false is returned. More...
 
static bool IsSymmetric (IMatrix mat)
 Returns true if the specified matrix is symmetric, and false if not. If the matrix is null then false is returned. More...
 
static bool IsSymmetric (IMatrix mat, double relativeRMSTolerance)
 Returns true if the specified matrix is symmetric within some tolerance, and false if not. If the matrix is null then false is returned. More...
 
static int Compare (IMatrix m1, IMatrix m2)
 Compares two matrices and returns -1 if the first matrix is smaller than the second one, 0 if matrices are equal, and 1 if the first matrix is greater. Matrix that is null is considered smaller than a matrix that is not null. Two null matrices are considered equal. Matrix with smaller dimension is considered smaller than a matrix with greater dimension. Matrices with equal dimensions ar compared by elements. The first element that is different decides which matrix is considered greater. More...
 
static void Resize (ref IMatrix mat, IMatrix template, int rowCount, int columnCount)
 Resizes, if necessary, the specified matrix according to the required dimensions. If the matrix is initially null then a new matrix is created. If in this case a template matrix is specified then the newly created matrix will be of the same type as that template matrix, because it is created by the GetNew() method on that matrix. If dimensions of the initial matrix do not match the required dim., then matrix is resized. If the specified matrix dimension is less or equal to 0 then matrix is resized with the same dimensions as those of the template matirx. If in this case the template matrix is null, an exception is thrown. WARNINGS: Components are NOT preserved and have in general undefined values after operation is performed. If matrix and template are both null then the type of nawly created matrix is Matrix. More...
 
static void Resize (ref IMatrix mat, int rowCount, int columnCount)
 Resizes, if necessary, the specified matrix according to the required dimensions. If the matrix is initially null then a new matrix (of type Matrix) is created. If dimensions of the initial matrix do not match the required dimensions, then matrix is resized. Components are NOT preserved and have in general undefined values after operation is performed. WARNING: If the matrix is initially null then the type of the newly created matrix is Matrix. More...
 
static void Resize (ref IMatrix mat, IMatrix template)
 Resizes, if necessary, the specified matrix according to the dimensions of the specified template matrix. If the matrix is initially null then a new matrix is created. In this case the newly created matrix will be of the same type as that template matrix, because it is created by the GetNew() method on that matrix. If dimensions of the initial matrix do not match the dimensions of the template matrix, then matrix is resized. If the template matrix is null, then an exception is thrown. WARNINGS: Components are NOT preserved and have in general undefined values after operation is performed. If matrix and template are null then the type of newly created matrix is Matrix. More...
 
static void CopyPlain (IMatrix a, IMatrix result)
 Copies components of a matrix to another matrix. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of the copied matrix and result storage must match. More...
 
static void Copy (IMatrix a, IMatrix result)
 Copies components of a matrix to another matrix. WARNING: dimensions of the copied matrix and result storage must match. More...
 
static void Copy (IMatrix a, ref IMatrix result)
 Copies components of a matrix to another matrix. Resulting matrix is allocated or reallocated if necessary. More...
 
static void CopyPlain (MatrixBase_MathNetNumerics a, IMatrix result)
 Copies components of a matrix to another matrix. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of the copied matrix and result storage must match. More...
 
static void Copy (MatrixBase_MathNetNumerics a, IMatrix result)
 Copies components of a matrix to another matrix. WARNING: dimensions of the copied matrix and result storage must match. More...
 
static void Copy (MatrixBase_MathNetNumerics a, ref IMatrix result)
 Copies components of a matrix to another matrix. Resulting matrix is allocated or reallocated if necessary. More...
 
static void CopyPlain (IMatrix a, Matrix_MathNetNumercs result)
 Copies components of a matrix to another matrix. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of the copied matrix and result storage must match. More...
 
static void Copy (IMatrix a, Matrix_MathNetNumercs result)
 Copies components of a matrix to another matrix. WARNING: dimensions of the copied matrix and result storage must match. More...
 
static void Copy (IMatrix a, ref Matrix_MathNetNumercs result)
 Copies components of a matrix to another matrix. Resulting matrix is allocated or reallocated if necessary. More...
 
static void NegatePlain (IMatrix a, IMatrix result)
 Stores a negative matrix of the operand in another matrix. Can be done in-place. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of the operand and result storage must match. More...
 
static void Negate (IMatrix a, IMatrix result)
 Stores a negative matrix of the operand in another matrix. Can be done in-place. WARNING: dimensions of the operand and result storage must match. More...
 
static void Negate (IMatrix a, ref IMatrix result)
 Stores a negative matrix of the operand in another matrix. Can be done in-place. Resulting matrix is allocated or reallocated if necessary. More...
 
static void TransposePlain (IMatrix a, IMatrix result)
 Stores transpose of the operand in another matrix. Can be done in-place. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of the operand and result storage must match. More...
 
static void Transpose (IMatrix a, IMatrix result)
 Stores transpose of the operand in another matrix. Can be done in-place. WARNING: dimensions of the operand and result storage must match. More...
 
static void Transpose (IMatrix a, ref IMatrix result)
 Stores transpose of the matrix operand in another matrix. Can be done in-place. Resulting matrix is allocated or reallocated if necessary. More...
 
static void SymmetrizePlain (IMatrix a, IMatrix sym, IMatrix antiSym)
 Calculates symmetric and antisymmetric part of the specified matrix (symmetric part is stored in the first result argument but is calculated last, such that it overrides antisymmetric when both arguments point to the same matrix object). More...
 
static void Symmetrize (IMatrix a, IMatrix sym, IMatrix antiSym)
 Calculates symmetric and antisymmetric part of the specified matrix (symmetric part is stored in the first result argument but is calculated last, such that it overrides antisymmetric when both arguments point to the same matrix object). More...
 
static void Symmetrize (IMatrix a, ref IMatrix sym, ref IMatrix antiSym)
 Stores symmetrized and antisymmetirzed matrix obtained from the specified matrix. Resulting matrix is allocated or reallocated if necessary. More...
 
static void SymmetricPartPlain (IMatrix a, IMatrix result)
 Stores symmetric part of a square matrix operand in another matrix. Symmetrization is performed by averaging of non-diagonal terms and their transposed terms. Can be done in-place. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of the operand and result storage must match. More...
 
static void SymmetricPart (IMatrix a, IMatrix result)
 Stores symmetric part of a square matrix operand in another matrix. Symmetrization is performed by averaging of non-diagonal terms and their transposed terms. Can be done in-place. WARNING: dimensions of the operand and result storage must match. More...
 
static void SymmetricPart (IMatrix a, ref IMatrix result)
 Stores symmetric part of a square matrix operand in another matrix. Symmetrization is performed by averaging of non-diagonal terms and their transposed terms. Can be done in-place. Resulting matrix is allocated or reallocated if necessary. More...
 
static void AntisymmetricPartPlain (IMatrix a, IMatrix result)
 Stores antisymmetric part of a square matrix operand in another matrix. Antisymmetrization is performed by subtracting non-diagonal terms and their transposed terms, division by 2 and storing result in one matrix element and its negative value in another element. Can be done in-place. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of the operand and result storage must match. More...
 
static void AntisymmetricPart (IMatrix a, IMatrix result)
 Stores antisymmetric part of a square matrix operand in another matrix. Antisymmetrization is performed by subtracting non-diagonal terms and their transposed terms, division by 2 and storing result in one matrix element and its negative value in another element. Can be done in-place. WARNING: dimensions of the operand and result storage must match. More...
 
static void AntisymmetricPart (IMatrix a, ref IMatrix result)
 Stores antisymmetric part of a square matrix operand in another matrix. Antisymmetrization is performed by subtracting non-diagonal terms and their transposed terms, division by 2 and storing result in one matrix element and its negative value in another element. Can be done in-place. Resulting matrix is allocated or reallocated if necessary. More...
 
static void AddPlain (IMatrix a, IMatrix b, IMatrix result)
 Sums two matrices and stores the result in the specified result matrix. Operation can be performed in place. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void Add (IMatrix a, IMatrix b, IMatrix result)
 Sums two matrices and stores the result in the specified result matrix. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void Add (IMatrix a, IMatrix b, ref IMatrix result)
 Sums two matrices and stores the result in the specified result matrix. Operation can be performed in place. WARNING: dimensions of operands must match, otherwise an exception is thrown. If dimensions of the result do not match then teh result is re-allocated. More...
 
static void SubtractPlain (IMatrix a, IMatrix b, IMatrix result)
 Subtracts two matrices and stores the result in the specified result matrix. Operation can be performed in place. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void Subtract (IMatrix a, IMatrix b, IMatrix result)
 Subtracts two matrices and stores the result in the specified result matrix. Operation can be performed in place. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void Subtract (IMatrix a, IMatrix b, ref IMatrix result)
 Subtracts two matrices and stores the result in the specified result matrix. Operation can be performed in place. WARNING: dimensions of operands must match, otherwise an exception is thrown. If dimensions of the result do not match then teh result is re-allocated. More...
 
static void ArrayMultiplyPlain (IMatrix a, IMatrix b, IMatrix result)
 Element-by-element multiplication. This operation can be performed in place. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void ArrayMultiply (IMatrix a, IMatrix b, IMatrix result)
 Element-by-element multiplication. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void ArrayMultiply (IMatrix a, IMatrix b, ref IMatrix result)
 Element-by-element multiplication. WARNING: dimensions of operands must match, otherwise an exception is thrown. If dimensions of the result do not match then teh result is re-allocated. More...
 
static void ArrayDividePlain (IMatrix a, IMatrix b, IMatrix result)
 Element-by-element division. This operation can be performed in place. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void ArrayDivide (IMatrix a, IMatrix b, IMatrix result)
 Element-by-element division. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void ArrayDivide (IMatrix a, IMatrix b, ref IMatrix result)
 Element-by-element division. WARNING: dimensions of operands must match, otherwise an exception is thrown. If dimensions of the result do not match then teh result is re-allocated. More...
 
static void ArrayPowerPlain (IMatrix a, double power, IMatrix result)
 Element-by-element raise to power. This operation can be performed in place. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void ArrayPower (IMatrix a, double power, IMatrix result)
 Element-by-element raise to power. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void ArrayPower (IMatrix a, double power, ref IMatrix result)
 Element-by-element raise to power. WARNING: dimensions of operands must match, otherwise an exception is thrown. If dimensions of the result do not match then teh result is re-allocated. More...
 
static void ArrayMapPlain (IMatrix a, Converter< double, double > mapping, IMatrix result)
 Element-by-element mapping of an arbitrary function. This operation can be performed in place. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void ArrayMap (IMatrix a, Converter< double, double > mapping, IMatrix result)
 Element-by-element mapping of an arbitrary function. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void ArrayMap (IMatrix a, Converter< double, double > mapping, ref IMatrix result)
 Element-by-element mapping of an arbitrary function. WARNING: dimensions of operands must match, otherwise an exception is thrown. If dimensions of the result do not match then teh result is re-allocated. More...
 
static void MultiplyPlain (IMatrix a, IMatrix b, IMatrix result)
 R=A*B. Multiplies two matrices and stores the result in the specified result matrix. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void Multiply (IMatrix a, IMatrix b, IMatrix result)
 R=A*B. Multiplies two matrices and stores the result in the specified result matrix. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void Multiply (IMatrix a, IMatrix b, ref IMatrix result)
 R=A*B. Multiplies two matrices and stores the result in the specified result matrix. WARNING: dimensions of operands must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyTranspMatPlain (IMatrix a, IMatrix b, IMatrix result)
 R=A^T*B Calculates product of transposed matrix and a matrix, and stores the result in the specified result matrix. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyTranspMat (IMatrix a, IMatrix b, IMatrix result)
 R=A^T*B Multiplies two matrices and stores the result in the specified result matrix. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyTranspMat (IMatrix a, IMatrix b, ref IMatrix result)
 R=A^T*B Multiplies two matrices and stores the result in the specified result matrix. WARNING: dimensions of operands must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyMatTranspPlain (IMatrix a, IMatrix b, IMatrix result)
 R=A*B^T. Multiplies a matrix by transpose of another matrix and stores the result in the specified result matrix. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyMatTransp (IMatrix a, IMatrix b, IMatrix result)
 R=A*B^T. Multiplies a matrix by transpose of another matrix and stores the result in the specified result matrix. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyMatTransp (IMatrix a, IMatrix b, ref IMatrix result)
 R=A*B^T. Multiplies a matrix by transpose of another matrix and stores the result in the specified result matrix. WARNING: dimensions of operands must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyTranspTranspPlain (IMatrix a, IMatrix b, IMatrix result)
 R=A^T*B^T. Multiplies transposed matrix by another transposed matrix, and stores the result in the specified result matrix. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyTranspTransp (IMatrix a, IMatrix b, IMatrix result)
 R=A^T*B^T. Multiplies transposed matrix by another transposed matrix, and stores the result in the specified result matrix. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyTranspTransp (IMatrix a, IMatrix b, ref IMatrix result)
 R=A^T*B^T. Multiplies transposed matrix by another transposed matrix, and stores the result in the specified result matrix. WARNING: dimensions of operands must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyPlain (IMatrix a, IMatrix b, IMatrix c, IMatrix result)
 R=A*B*C. Multiplies three matrices and stores the result in the specified result matrix. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void Multiply (IMatrix a, IMatrix b, IMatrix c, IMatrix result)
 R=A*B*C. Multiplies three matrices and stores the result in the specified result matrix. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void Multiply (IMatrix a, IMatrix b, IMatrix c, ref IMatrix result)
 R=A*B*C. Multiplies three matrices and stores the result in the specified result matrix. WARNING: dimensions of operands must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyTranspMatTranspPlain (IMatrix a, IMatrix b, IMatrix c, IMatrix result)
 R=A^T*B*C^T. Multiplies three matrices (transposed first argument, second argument, and transposed third argument) and stores the result in the specified result matrix. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of all arguments must be consistent, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyTranspMatTransp (IMatrix a, IMatrix b, IMatrix c, IMatrix result)
 R=A^T*B*C^T. Multiplies three matrices (transposed first argument, second argument, and transposed third argument) and stores the result in the specified result matrix. WARNING: dimensions of all arguments must be consistent, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyTranspMatTransp (IMatrix a, IMatrix b, IMatrix c, ref IMatrix result)
 R=A^T*B*C^T. Multiplies three matrices (transposed first argument, second argument, and transposed third argument) and stores the result in the specified result matrix. WARNING: dimensions of operands must be consistent, otherwise an exception is thrown. WARNING: This operation can not be performed in place. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyTranspMatMatPlain (IMatrix a, IMatrix b, IMatrix c, IMatrix result)
 R=A^T*B*C. Multiplies three matrices (transposed first argument, second argument, and third argument) and stores the result in the specified result matrix. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of all arguments must be consistent, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyTranspMatMat (IMatrix a, IMatrix b, IMatrix c, IMatrix result)
 R=A^T*B*C. Multiplies three matrices (transposed first argument, second argument, and third argument) and stores the result in the specified result matrix. WARNING: dimensions of all arguments must be consistent, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyTranspMatMat (IMatrix a, IMatrix b, IMatrix c, ref IMatrix result)
 R=A^T*B*C. Multiplies three matrices (transposed first argument, second argument, and third argument) and stores the result in the specified result matrix. WARNING: dimensions of operands must be consistent, otherwise an exception is thrown. WARNING: This operation can not be performed in place. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyMatMatTranspPlain (IMatrix a, IMatrix b, IMatrix c, IMatrix result)
 R=A*B*C^T. Multiplies three matrices (first argumet, second argumet, and transposed third argument) and stores the result in the specified result matrix. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyMatMatTransp (IMatrix a, IMatrix b, IMatrix c, IMatrix result)
 R=A*B*C^T. Multiplies three matrices (first argumet, second argumet, and transposed third argument) and stores the result in the specified result matrix. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyMatMatTransp (IMatrix a, IMatrix b, IMatrix c, ref IMatrix result)
 R=A*B*C^T. Multiplies three matrices (first argumet, second argumet, and transposed third argument) and stores the result in the specified result matrix. WARNING: dimensions of operands must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyMatTranspMatPlain (IMatrix a, IMatrix b, IMatrix c, IMatrix result)
 R=A*B^T*C. Multiplies three matrices (first argument, transposed second argument, and third argument) and stores the result in the specified result matrix. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyMatTranspMat (IMatrix a, IMatrix b, IMatrix c, IMatrix result)
 R=A*B^T*C. Multiplies three matrices (first argument, transposed second argument, and third argument) and stores the result in the specified result matrix. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyMatTranspMat (IMatrix a, IMatrix b, IMatrix c, ref IMatrix result)
 R=A*B^T*C. Multiplies three matrices (first argument, transposed second argument, and third argument) and stores the result in the specified result matrix. WARNING: dimensions of operands must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyTranspTranspTranspPlain (IMatrix a, IMatrix b, IMatrix c, IMatrix result)
 R=A^T*B^T*C^T. Multiplies three matrices and stores the result in the specified result matrix. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyTranspTranspTransp (IMatrix a, IMatrix b, IMatrix c, IMatrix result)
 R=A^T*B^T*C^T. Multiplies three matrices and stores the result in the specified result matrix. WARNING: dimensions of matrices must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. More...
 
static void MultiplyTranspTranspTransp (IMatrix a, IMatrix b, IMatrix c, ref IMatrix result)
 R=A^T*B^T*C^T. Multiplies three matrices and stores the result in the specified result matrix. WARNING: dimensions of operands must match, otherwise an exception is thrown. WARNING: This operation can not be performed in place. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyPlain (IMatrix a, IVector b, IVector result)
 R=A*b. Multiplies a matrix with a vector and stores the result in the specified result vector. Operation can not be performed in place. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void Multiply (IMatrix a, IVector b, IVector result)
 R=A*b. Multiplies a matrix with a vector and stores the result in the specified result vector. Operation can not be performed in place. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void Multiply (IMatrix a, IVector b, ref IVector result)
 R=A*b. Multiplies matrix by scalar and stores the result in the specified result matrix. Operation can not be performed in place. WARNING: dimensions of operands must match, otherwise an exception is thrown. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyTranspVecPlain (IMatrix a, IVector b, IVector result)
 R=A^T*b. Multiplies a transposed matrix with a vector and stores the result in the specified result vector. Operation can not be performed in place. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void MultiplyTranspVec (IMatrix a, IVector b, IVector result)
 R=A^T*b. Multiplies a transposed matrix with a vector and stores the result in the specified result vector. Operation can not be performed in place. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void MultiplyTranspVec (IMatrix a, IVector b, ref IVector result)
 R=A^T*b. Multiplies transposed matrix by scalar and stores the result in the specified result matrix. Operation can not be performed in place. WARNING: dimensions of operands must match, otherwise an exception is thrown. If dimensions of the result do not match then the result is re-allocated. More...
 
static double MultiplyPlain (IVector left, IMatrix a, IVector right)
 R=a^T*M*b. Left-multiplies a matrix with a vector (transposed), right multiplies the result vith another vector, and returns the final result. Can be performed in place. This is a plain version of the method that does not perform any consistency checks. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static double Multiply (IVector left, IMatrix a, IVector right)
 R=a^T*M*b. Left-multiplies a matrix with a vector (transposed), right multiplies the result vith another vector, and returns the final result. Can be performed in place. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static double Multiply (IVector left, IMatrix a, IVector right, ref IVector result)
 R=a^T*M*b. Left-multiplies a matrix with a vector (transposed), right multiplies the result vith another vector, and returns the final result. Can be performed in place. WARNING: dimensions of operands must match, otherwise an exception is thrown. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyPlain (IMatrix a, double b, IMatrix result)
 Multiplies matrix by scalar and stores the result in the specified result matrix. This is a plain version of the method that does not perform any consistency checks. This operation can be performed in place. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void Multiply (IMatrix a, double b, IMatrix result)
 Multiplies matrix by scalar and stores the result in the specified result matrix. This operation can be performed in place. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void Multiply (IMatrix a, double b, ref IMatrix result)
 Multiplies matrix by scalar and stores the result in the specified result matrix. This operation can be performed in place. WARNING: dimensions of operands must match, otherwise an exception is thrown. If dimensions of the result do not match then the result is re-allocated. More...
 
static void DividePlain (IMatrix a, double b, IMatrix result)
 Divides matrix by scalar and stores the result in the specified result matrix. This is a plain version of the method that does not perform any consistency checks. This operation can be performed in place. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void Divide (IMatrix a, double b, IMatrix result)
 Divides matrix by scalar and stores the result in the specified result matrix. This operation can be performed in place. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void Divide (IMatrix a, double b, ref IMatrix result)
 Divides matrix by scalar and stores the result in the specified result matrix. This operation can be performed in place. WARNING: dimensions of operands must match, otherwise an exception is thrown. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyDiagonalPlain (IVector diag, IMatrix a, IMatrix result)
 Left-multiplies a matrix with a diagonal matrix, and stores the result in the specified result matrix. R=diag(d)*A This is a plain version of the method that does not perform any consistency checks. The operation can be done in place. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void MultiplyDiagonal (IVector diag, IMatrix a, IMatrix result)
 Right-multiplies a matrix with a diagonal matrix, and stores the result in the specified result matrix. R=diag(d)*A WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void MultiplyDiagonal (IVector diag, IMatrix a, ref IMatrix result)
 Right-multiplies a matrix with a diagonal matrix, and stores the result in the specified result matrix. R=diag(d)*A WARNING: dimensions of operands must match, otherwise an exception is thrown. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyInverseDiagonalPlain (IVector diag, IMatrix a, IMatrix result)
 Left-multiplies a matrix with inverse of a diagonal matrix, and stores the result in the specified result matrix. R=diag(d)^-1*A This is a plain version of the method that does not perform any consistency checks. The operation can be done in place. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void MultiplyInverseDiagonal (IVector diag, IMatrix a, IMatrix result)
 Right-multiplies a matrix with inverse of a diagonal matrix, and stores the result in the specified result matrix. R=diag(d)^-1*A WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void MultiplyInverseDiagonal (IVector diag, IMatrix a, ref IMatrix result)
 Right-multiplies a matrix with inverse of a diagonal matrix, and stores the result in the specified result matrix. R=diag(d)^-1*A WARNING: dimensions of operands must match, otherwise an exception is thrown. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyDiagonalPlain (IMatrix a, IVector diag, IMatrix result)
 Right-multiplies a matrix with a diagonal matrix, and stores the result in the specified result matrix. R=A*diag(d) This is a plain version of the method that does not perform any consistency checks. The operation can be done in place. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void MultiplyDiagonal (IMatrix a, IVector diag, IMatrix result)
 Right-multiplies a matrix with a diagonal matrix, and stores the result in the specified result matrix. R=A*diag(d) WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void MultiplyDiagonal (IMatrix a, IVector diag, ref IMatrix result)
 Right-multiplies a matrix with a diagonal matrix, and stores the result in the specified result matrix. R=A*diag(d) WARNING: dimensions of operands must match, otherwise an exception is thrown. If dimensions of the result do not match then the result is re-allocated. More...
 
static void MultiplyInverseDiagonalPlain (IMatrix a, IVector diag, IMatrix result)
 Right-multiplies a matrix with inverse of a diagonal matrix, and stores the result in the specified result matrix. R=A*diag(d)^-1 This is a plain version of the method that does not perform any consistency checks. The operation can be done in place. WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void MultiplyInverseDiagonal (IMatrix a, IVector diag, IMatrix result)
 Right-multiplies a matrix with inverse of a diagonal matrix, and stores the result in the specified result matrix. R=A*diag(d)^-1 WARNING: dimensions of matrices must match, otherwise an exception is thrown. More...
 
static void MultiplyInverseDiagonal (IMatrix a, IVector diag, ref IMatrix result)
 Right-multiplies a matrix with inverse of a diagonal matrix, and stores the result in the specified result matrix. R=A*diag(d)^-1 WARNING: dimensions of operands must match, otherwise an exception is thrown. If dimensions of the result do not match then the result is re-allocated. More...
 
static int GetHashCode (IMatrix mat)
 Returns hashRet code of the specified matrix. More...
 
static bool Equals (IMatrix m1, IMatrix m2)
 Returns true if the specified matrices are equal, false if not. More...
 
static int GetHashFunctionInt (IMatrix mat)
 Returns an integer valued hashRet function of the specified matrix object. More...
 
static string GetHashFunctionString (IMatrix mat)
 Returns a string valued hashRet function of the specified matrix object. More...
 
static string ToStringReadable (IMatrix mat, int accuracy=4, int padding=8)
 Returns a readable string form of a matrix, accuracy and padding can be set. More...
 
static string ToStringNewlines (IMatrix mat)
 Returns a string representation of the specified matrix with newlines inserted after each row. Rows and elements are printed in comma separated lists in curly brackets. More...
 
static string ToStringNewlines (IMatrix mat, string elementFormat)
 Returns a string representation of the specified matrix with newlines inserted after each row, with the specified format for elements of the matrix. Rows and elements are printed in comma separated lists in curly brackets. More...
 
static string ToString (IMatrix mat)
 Returns string representation of the current matrix in the standard IGLib form (Mathematica-like format but with C representation of numbers). Rows and elements are printed in comma separated lists in curly brackets. More...
 
static string ToStringMath (IMatrix mat)
 Returns string representation of the current matrix in the standard IGLib form (Mathematica-like format but with C representation of numbers). Rows and elements are printed in comma separated lists in curly brackets. More...
 
static string ToString (IMatrix mat, string elementFormat)
 Returns string representation of the current matrix in the standard IGLib form (Mathematica-like format but with C representation of numbers), with the specified format for elements of the matrix. Rows and elements are printed in comma separated lists in curly brackets. More...
 
static string ToStringMath (IMatrix mat, string elementFormat)
 Returns string representation of the current matrix in the standard IGLib form (Mathematica-like format but with C representation of numbers), with the specified format for elements of the matrix. Rows and elements are printed in comma separated lists in curly brackets. More...
 
static void SaveJson (IMatrix mat, string filePath)
 Saves (serializes) the specified matrix to the specified JSON file. File is owerwritten if it exists. More...
 
static void SaveJson (IMatrix mat, string filePath, bool append)
 Saves (serializes) the specified matrix to the specified JSON file. More...
 
static void LoadJson (string filePath, ref IMatrix matRestored)
 Restores (deserializes) a matrix object from the specified file in JSON format. More...
 
static MatrixBase operator+ (MatrixBase m)
 Unary plus, returns the operand. More...
 
static MatrixBase operator- (MatrixBase m)
 Unary negation, returns the negative operand. More...
 
static MatrixBase operator+ (MatrixBase a, MatrixBase b)
 Matrix addition. More...
 
static MatrixBase operator- (MatrixBase a, MatrixBase b)
 Matrix subtraction. More...
 
static MatrixBase operator* (MatrixBase a, MatrixBase b)
 Product of two matrices. More...
 
static VectorBase operator* (MatrixBase a, VectorBase b)
 Product of a matrix and a vector. More...
 
static MatrixBase operator* (MatrixBase a, double b)
 Product of a matrix by a scalar. More...
 
static MatrixBase operator* (double a, MatrixBase b)
 Product of a matrix by a scalar. More...
 
static MatrixBase operator/ (MatrixBase a, double b)
 Matrix subtraction. More...
 
static double DeterminantSlow (IMatrix A)
 Simpler but slower (compared to Determinant) implementation of determinant calculation of an arbitrary square real matrix. More...
 
static double Determinant (IMatrix A, ref int[] auxPermutations, ref IMatrix auxLU)
 Calculates and returns determinant of a real-valued square matrix. More...
 
static void LuDecompose (IMatrix A, out int toggle, ref int[] perm, ref IMatrix result)
 Calculates thr Doolittle LU decomposition with partial pivoting (LUP) of a square real matrix. More...
 
static void LuSolve (IMatrix luMatrix, int[] perm, IVector b, ref IVector auxVec, ref IVector x)
 Solves a system of equations with the specified right-hand sides and the specified LU decomposition of the system matrix. More...
 
static void LuSolve (IMatrix luMatrix, int[] perm, IMatrix B, ref IVector auxVec, ref IVector auxRight, ref IVector auxX, ref IMatrix X)
 Calculates inverse of the matrix from its specified LU decomposition. More...
 
static void LuInverse (IMatrix luMatrix, int[] perm, ref IVector auxRight, ref IVector auxX, ref IMatrix res)
 Calculates inverse of the matrix from its specified LU decomposition. More...
 
static double LuDeterminant (IMatrix luMatrix, int toggle)
 Calculates and returns matrix determinant form its specified LU decomposition. More...
 
static void LuExtractLower (IMatrix matLu, ref IMatrix result)
 Extracts the lower part of the Doolittle specified LU decomposition (1s on diagonal, 0s in above diagonal) and stores it in the specified result matrix. More...
 
static IMatrix LuExtractUpper (IMatrix matLu, ref IMatrix result)
 Extracts the upper part of the specified Doolittle LU decomposition 0s below diagonal) and stores it in the specified result matrix. More...
 
static void PermutationArrayToMatrix (int[] perm, ref IMatrix res)
 Calculates and stores permutation matrix that correspond to the specified permutation array. More...
 
static void Permute (IMatrix A, int[] permutations, ref IMatrix result)
 Permutes rows of the specified aquare matrix according to the specified permutations array. More...
 
static void UnPermute (IMatrix Apermuted, int[] permutations, ref int[] auxArray, ref IMatrix result)
 Unpermutes the product of the specified DooLittle LU decomposition according to permutations array. More...
 
static bool TestLuDecomposition (int dim, int numRepetitions=1, double tol=1e-6, int outputLevel=0, IRandomGenerator randomGenerator=null, IMatrix A=null, IVector b=null)
 Performs a test of calculatons performed via LU decomposition of a matrix. Calculation times and error extents are measured and reported (if specified). More...
 
static void TestLuDecompositionDemo ()
 Demonstration of usae of LU decomposition. More...
 
static bool LdltDecompose (IMatrix A, ref IMatrix result, double tol=1e-12)
 Calculates LDLT decomposition of a real symmetric square matrix. More...
 
static void LdltSolve (IMatrix decomposed, IVector b, ref IVector x)
 Solves a system of eauations with the specified LDLT decomposition of a real symmetric square matrix. More...
 
static void LdltSolve (IMatrix ldltMatrix, IMatrix B, ref IVector auxX, ref IMatrix X)
 Calculates inverse of the matrix from its specified LDLT-decomposed matrix. More...
 
static void LdltInverse (IMatrix ldltMatrix, ref IVector auxX, ref IMatrix res)
 Calculates inverse of the matrix from its specified LDLT decomposition. More...
 
static double LdltDeterminant (IMatrix ldltMatrix)
 Calculates and returns determinant of a square symmetric matrix form its specified LDLT decomposition. More...
 
static void LdltExtractLower (IMatrix matLdlt, ref IMatrix result)
 Extracts the lower part of the specified LDLT decomposition (1s on diagonal, 0s above diagonal) and stores it in the specified result matrix. More...
 
static IMatrix LdltExtractUpper (IMatrix matLdlt, ref IMatrix result)
 Extracts the upper part of the specified LDLT decomposition (1s on diagonal, 0s in below diagonal) and stores it in the specified result matrix. More...
 
static IMatrix LdltExtractDiagonal (IMatrix matLdlt, ref IMatrix result)
 Extracts the diagonal part of the specified LDLT decomposition and stores it in the specified result matrix. More...
 
static bool TestLdltDecomposition (int dim, int numRepetitions=1, double tol=1e-6, int outputLevel=0, IRandomGenerator randomGenerator=null, IMatrix A=null, IVector b=null)
 Performs a test of calculatons performed via LDLT decomposition of a matrix. Calculation times and error extents are measured and reported (if specified). More...
 
static bool CholeskyDecompose (IMatrix A, ref IMatrix result, double tol=1e-12)
 Calculates Cholesky decomposition of a real symmetric square matrix. More...
 
static void CholeskySolve (IMatrix decomposed, IVector b, ref IVector x)
 Solves a system of eauations with the specified Cholesky decomposition of a real symmetric square matrix. More...
 
static void CholeskySolve (IMatrix CholeskyMatrix, IMatrix B, ref IVector auxX, ref IMatrix X)
 Calculates inverse of the matrix from its specified Cholesky-decomposed matrix. More...
 
static void CholeskyInverse (IMatrix CholeskyMatrix, ref IVector auxX, ref IMatrix res)
 Calculates inverse of the matrix from its specified Cholesky decomposition. More...
 
static double CholeskyDeterminant (IMatrix CholeskyMatrix)
 Calculates and returns determinant of a square symmetric matrix form its specified Cholesky decomposition. More...
 
static void CholeskyExtractLower (IMatrix matCholesky, ref IMatrix result)
 Extracts the lower part of the specified Cholesky decomposition (0s above diagonal) and stores it in the specified result matrix. More...
 
static IMatrix CholeskyExtractUpper (IMatrix matCholesky, ref IMatrix result)
 Extracts the upper part of the specified Cholesky decomposition (0s in below diagonal) and stores it in the specified result matrix. More...
 
static bool TestCholeskyDecomposition (int dim, int numRepetitions=1, double tol=1e-6, int outputLevel=0, IRandomGenerator randomGenerator=null, IMatrix A=null, IVector b=null)
 Performs test of calculatons performed via Cholesky decomposition of a matrix. Calculation times and error extents are measured and reported (if specified so). More...
 
static void TestCholeskyDecompositionDemo ()
 Demonstration of usae of Cholesky decomposition. More...
 
static bool QrDecomposeGrammSchmidt (IMatrix A, ref IMatrix resQ, ref IMatrix resR, double tol=1e-12)
 Calculates QR decomposition of a real invertible matrix by using Gramm-Schmidt orthogonalization. More...
 
static bool QrDecompose (IMatrix A, ref IMatrix resQ, ref IMatrix resR, double tol=1e-12)
 Calculates QR decomposition of a real invertible matrix. More...
 
static void QrSolve (IMatrix factorQ, IMatrix factorR, IVector b, ref IVector x)
 Solves a system of eauations with the specified QR decomposition of a real symmetric square matrix. More...
 
static void QrSolve (IMatrix factorQ, IMatrix factorR, IMatrix B, ref IVector auxB, ref IVector auxX, ref IMatrix X)
 Calculates inverse of the matrix from its specified LDLT-decomposed matrix. More...
 
static void QrInverse (IMatrix factorQ, IMatrix factorR, ref IVector auxB, ref IVector auxX, ref IMatrix res)
 Calculates inverse of the matrix from its specified LDLT decomposition. More...
 
static bool TestMatrixProducts (bool printReports)
 Tests various matrix and vector products with fixed tolerance of 1.0E-6. More...
 
static bool TestMatrixProducts (double tolerance)
 Tests various matrix and vector products, without printing reports. More...
 
static bool TestMatrixProducts ()
 Tests various matrix and vector products with fixed tolerance of 1.0E-6 and without printing reports. More...
 
static bool TestMatrixProducts (double tolerance, bool printReports)
 Tests various matrix and vector products. More...
 
static void TestStaticMethodCommon ()
 A test method, just prints some output. More...
 
static void TestStaticMethodSpecific ()
 A test method, just prints some output. More...
 
static bool TestIndices (int dim1=3, int dim2=4, IMatrix providedMatrix=null)
 Performs test of converson between double indexing and flat indexing of matric elements,. Returns true if successful, false othwrwise. More...
 

Protected Member Functions

 Matrix ()
 Creates a new matrix with dimensions 0. More...
 
void CopyFromMatNetNumericsMatrix (Matrix_MathNetNumerics A)
 Copies components from a specified MathNet.Numerics matrix. More...
 

Protected Attributes

double[][] _elements
 Matrix elements. More...
 
int _rowCount
 Number of rows. More...
 
int _columnCount
 Number of columns. More...
 
Matrix_MathNetNumerics _copyMathNetNumerics = null
 Copy of the current matrix as Math.Net numerics matrix. More...
 
bool _mathNetNumericsConsistent = false
 Whetherr the Math.Net Matrix copy is consistent. More...
 

Properties

override int RowCount [get]
 Gets the first dimension (number of rows) of the matrix. More...
 
override int ColumnCount [get]
 Gets the second dimension (number of columns) of the matrix. More...
 
virtual int RowCountSetter [set]
 Sets the first dimension (number of rows) of the matrix. This setter must be used very restrictively - only in setters that can change matrix dimensions. Setter is defined separately from getter because the base class' property does not define a getter. More...
 
virtual int ColumnCountSetter [set]
 Sets the first dimension (number of rows) of the matrix. This setter must be used very restrictively - only in setters that can change matrix dimensions. Setter is defined separately from getter because the base class' property does not define a getter. More...
 
override double this[int i, int j] [get, set]
 Gets or set the element indexed by (i, j) in the Matrix. More...
 
virtual bool IsCopyMathNetNumericsConsistent [get, protected set]
 Tells whether the internal MathNet.Numerics matrix representation of the current matrix is consistent with the current matrix. The MathNet.Numerics representation is used for operations that are used from that library such as different kinds of decompositions. More...
 
virtual Matrix_MathNetNumerics CopyMathNetNumerics [get]
 Gets the internal MathNet.Numerics representation of the current matrix. Representation is created on demand. However, the same copy is returned as long as it is consistent with the current matrix. Use GetCopyMathNet() to create a new copy each time. More...
 
new Matrix T [get]
 Returns a new matrix that is transpose of the current matrix. Re-implemented here for efficiency (hides the base class property). More...
 
override double NormEuclidean [get]
 Gets the Forbenius norm of the matrix, the square root of sum of squares of all elements. More...
 
override double Norm [get]
 Gets the Forbenius norm of the matrix, the square root of sum of squares of all elements. More...
 
virtual double Norm1 [get]
 Gets the one norm of the matrix, the maximum column sum of absolute values. More...
 
virtual double Norm2 [get]
 Gets the two norm of the matrix, i.e. its maximal singular value. More...
 
virtual double NormInf [get]
 Gets the infinity norm of the matrix, the maximum row sum of absolute values. More...
 
- Properties inherited from IG.Num.MatrixBase
abstract int RowCount [get]
 Gets the number of rows of the current matrix. More...
 
abstract int ColumnCount [get]
 Gets the number of columns of the current matrix. More...
 
virtual int Count [get]
 Gets total number of elements. More...
 
virtual IMatrix T [get]
 Returns a new matrix that is transpose of the current matrix. More...
 
virtual double this[int flatIndex] [get, set]
 Gets or set the element indexed by a flat index in the Matrix. More...
 
virtual double this[int row, int column] [get, set]
 Gets or set the element indexed by (i, j) in the Matrix. More...
 
virtual double Trace [get]
 Gets matrix trace (sum of diagonal terms). More...
 
virtual double NormForbenius [get]
 Gets Forbenious (or Euclidean) norm of the matrix - square root of sum of squares of elements. More...
 
virtual double NormEuclidean [get]
 Gets Forbenious (or Euclidean) norm of the matrix - square root of sum of squares of elements. More...
 
virtual double Norm [get]
 Gets Forbenious (or Euclidean) norm of the matrix - square root of sum of squares of elements. More...
 
static MatrixStore MatrixStore [get]
 Gets the matrix store for recycling auxiliary matrices. More...
 

Additional Inherited Members

- Static Protected Member Functions inherited from IG.Num.MatrixBase
static void LuSolveNoPermutationsPlain (IMatrix luMatrix, IVector b, IVector x)
 Solves a system of equations with the specified LU decomposition with already permuted b. More...
 
static bool CheckTestResult (IMatrix result, IMatrix referenceResult, double tolerance, bool printReports)
 Checks whether the difference between matrix result of the tested operation and some reference result is within the specified tolerance. More...
 
static bool CheckTestResult (IVector result, IVector referenceResult, double tolerance, bool printReports)
 Checks whether the difference between matrix result of the tested operation and some reference result is within the specified tolerance. More...
 

Detailed Description

Real matrix class. Some operations are performed by the MathNet.Numerics.LinearAlgebra.Matrix class.

$A Igor Jan08 Jul10 Nov10;

Constructor & Destructor Documentation

IG.Num.Matrix.Matrix ( )
inlineprotected

Creates a new matrix with dimensions 0.

Such a matrix can serve for future reallocation.

IG.Num.Matrix.Matrix ( IMatrix  A)
inline

Constructs a matrix from another matrix by copying the provided matrix components to the internal data structure.

Parameters
AMatrix whose components are copied to the current matrix.
IG.Num.Matrix.Matrix ( MatrixBase_MathNetNumerics  A)
inline

Construct a matrix from MathNet.Numerics.LinearAlgebra.Matrix. Only a reference of A is copied.

Parameters
AMathNet.Numerics.LinearAlgebra.Matrix from which a new matrix is created.
IG.Num.Matrix.Matrix ( int  d1,
int  d2 
)
inline

Constructs an d1*d2 - dimensional matrix of zeros.

Parameters
d1Number of rows.
d2Number of columns.
IG.Num.Matrix.Matrix ( int  d1,
int  d2,
double  val 
)
inline

Construct an numrows-by-d2 constant matrix with specified value for all elements.

Parameters
d1Number of rows.
d2Number of columns.
valValue of all components.
IG.Num.Matrix.Matrix ( IVector  diagonal)
inline

Constructs a square diagonal matrix with specified diagonal values.

Parameters
diagonalVector containing diagonal elements of the created matrix.
IG.Num.Matrix.Matrix ( int  dim,
double  elementValue 
)
inline

Constructs a d*d square matrix with specified diagonal value.

Parameters
dimSize of the square matrix.
elementValueDiagonal value.
IG.Num.Matrix.Matrix ( double  A[][])
inline

Constructs a matrix from a jagged 2-D array, directly using the provided array as internal data structure.

Parameters
ATwo-dimensional jagged array of doubles.
Exceptions
System.ArgumentExceptionAll rows must have the same length.
See also
Matrix.Create(double[][]), Matrix.Create(double[,])
IG.Num.Matrix.Matrix ( double  elementTable[,])
inline

Constructs a matrix from a 2-D array by deep-copying the provided array to the internal data structure.

Parameters
elementTableTwo-dimensional array of doubles.
IG.Num.Matrix.Matrix ( IList< double >  _matrixElements,
int  numRows,
int  numColumns = 0 
)
inline

Construct a matrix from a one-dimensional packed array.

Parameters
_matrixElementsOne-dimensional array of doubles, packed by columns (ala Fortran).
numRowsNumber of rows.
numColumnsNumber of columns. If 0 lthen it is calculated from numberr of rows and length of the element array.
Exceptions
System.ArgumentExceptionArray length must be a multiple of numrows.
IG.Num.Matrix.Matrix ( double[]  _matrixElements,
int  numRows,
int  numColumns = 0 
)
inline

Construct a matrix from a one-dimensional packed array.

Parameters
_matrixElementsOne-dimensional array of doubles, packed by columns (ala Fortran).
numRowsNumber of rows.
numColumnsNumber of columns. If 0 lthen it is calculated from numberr of rows and length of the element array.
Exceptions
System.ArgumentExceptionArray length must be a multiple of numrows.

Member Function Documentation

static Matrix IG.Num.Matrix.Create ( double  A[][])
inlinestatic

Constructs a matrix from a copy of a 2-D array by deep-copy.

Parameters
ATwo-dimensional array of doubles.
static Matrix IG.Num.Matrix.Create ( double  A[,])
inlinestatic

Constructs a matrix from a copy of a 2-D array by deep-copy.

Parameters
ATwo-dimensional array of doubles.

References IG.Num.A.

static Matrix IG.Num.Matrix.CreateFromColumns ( IList< Vector columnVectors)
inlinestatic

Construct a complex matrix from a set of real column vectors.

static Matrix IG.Num.Matrix.CreateFromRows ( IList< Vector rowVectors)
inlinestatic

Construct a complex matrix from a set of real row vectors.

static Matrix IG.Num.Matrix.Identity ( int  d1,
int  d2 
)
inlinestatic

Creates a d1*d2 identity matrix.

Parameters
d1Number of rows.
d2Number of columns.
Returns
An d1*d2 matrix with ones on the diagonal and zeros elsewhere.

Referenced by IG.Num.Matrix.Identity(), and IG.Num.MatrixBase.TestLuDecomposition().

static Matrix IG.Num.Matrix.Identity ( int  d)
inlinestatic

Creates a square identity matrix of dimension d*d.

Parameters
dMatrix dimension.
Returns
A d*d identity matrix.

References IG.Num.Matrix.Identity().

static Matrix IG.Num.Matrix.Zeros ( int  d1,
int  d2 
)
inlinestatic

Creates a d1*d2 matrix filled with 0.

Parameters
d1Number of rows.
d2Number of columns.
static Matrix IG.Num.Matrix.Zeros ( int  d)
inlinestatic

creates a square d*d matrix filled with 0.

Parameters
dNumber of rows and columns.
static Matrix IG.Num.Matrix.Ones ( int  d1,
int  d2 
)
inlinestatic

Creates a d1*d2 matrix filled with 1.

Parameters
d1Number of rows.
d2Number of columns.
static Matrix IG.Num.Matrix.Ones ( int  d)
inlinestatic

Generates a square d*d matrix filled with 1.

Parameters
dNumber of rows and columns.
static Matrix IG.Num.Matrix.Diagonal ( IVector< double >  diagonalVector,
int  d1,
int  d2 
)
inlinestatic

Creates a new diagonal d1*d2 matrix based on the diagonal vector.

Parameters
diagonalVectorThe values of the matrix diagonal.
d1Number of rows.
d2Number of columns.
Returns
A d1*d2 matrix with the values from the diagonal vector on the diagonal and zeros elsewhere.

Referenced by IG.Num.Matrix.Diagonal().

static Matrix IG.Num.Matrix.Diagonal ( IVector< double >  diagonalVector)
inlinestatic

Creates a new square diagonal matrix based on the diagonal vector.

Parameters
diagonalVectorThe values of the matrix diagonal.
Returns
A square matrix with the values from the diagonal vector on the diagonal and zeros elsewhere.

References IG.Num.Matrix.Diagonal().

static Matrix IG.Num.Matrix.Random ( int  d1,
int  d2 
)
inlinestatic

Generates a d1*d2 matrix with uniformly distributed random elements.

Parameters
d1Number of rows.
d2Number of columns.
Returns
A d1*d2 matrix with uniformly distributed random elements in [0, 1) interval.

References IG.Num.MatrixBase.SetRandom().

Referenced by IG.Num.SpeedTestCpu.TestComputationalTimesLU_Base(), IG.Num.SpeedTestCpu.TestComputationalTimesLU_IGLib(), and IG.Num.SpeedTestCpu.TestComputationalTimesQR_IGLib().

static Matrix IG.Num.Matrix.Random ( int  d1,
int  d2,
IRandomGenerator  rnd 
)
inlinestatic

Creates and returns a d1*d2 matrix with uniformly distributed random elements.

Parameters
d1Number of rows.
d2Number of columns.
rndRandom number generator used for generation of element values.
Returns
A d1*d2 matrix with uniformly distributed random elements in [0, 1) interval.

References IG.Num.MatrixBase.SetRandom().

static Matrix IG.Num.Matrix.Random ( int  d)
inlinestatic

Generates a d*d square matrix with standard-distributed random elements.

Parameters
dNumber of rows and columns.
Returns
A d*d square matrix with uniformly distributed random elements in [0, 1) interval.
void IG.Num.Matrix.CopyFromMatNetNumericsMatrix ( Matrix_MathNetNumerics  A)
inlineprotected

Copies components from a specified MathNet.Numerics matrix.

Parameters
AMatrix from which elements are copied.
Matrix_MathNetNumerics IG.Num.Matrix.GetCopyMathNetNumerics ( )
inline

Creates and returns a newly allocated MathNet.Numerics representation of the current matrix.

Matrix IG.Num.Matrix.GetCopyThis ( )
inline

Creates and returns a copy of the current matrix.

Returns
A new copy of the current matrix. The copy is supposed to be of the same type as the current matrix.
override MatrixBase IG.Num.Matrix.GetCopyBase ( )
inlinevirtual

Creates and returns a copy of the current matrix.

Returns
A new copy of the current matrix. The copy is supposed to be of the same type as the current matrix.

Implements IG.Num.MatrixBase.

virtual Matrix IG.Num.Matrix.GetNewThis ( int  rowCount,
int  columnCount 
)
inlinevirtual

Creates and returns a new matrix with the specified dimensions, and of the same type as the current matrix.

Parameters
rowCountNumber fo rows of the newly created matrix.
columnCountNumber of columns of the newly created matrix.
Returns
A newly created matrix of the specified dimensions and of the same type as the current matrix.

Referenced by IG.Num.Matrix.Copy().

override MatrixBase IG.Num.Matrix.GetNewBase ( int  rowCount,
int  columnCount 
)
inlinevirtual

Creates and returns a new matrix with the specified dimensions, and of the same type as the current matrix.

Parameters
rowCountNumber fo rows of the newly created matrix.
columnCountNumber of columns of the newly created matrix.
Returns
A newly created matrix of the specified dimensions and of the same type as the current matrix.

Implements IG.Num.MatrixBase.

Matrix IG.Num.Matrix.GetNewThis ( )
inline

Creates and returns a new matrix with the same dimensions and of the same type as the current matrix.

override MatrixBase IG.Num.Matrix.GetNewBase ( )
inlinevirtual

Creates and returns a new matrix with the same dimensions and of the same type as the current matrix.

Implements IG.Num.MatrixBase.

Vector IG.Num.Matrix.GetNewVectorThis ( int  length)
inline

Creates and returns a new vector with the specified dimension, and of the type that is consistent with the type of the current matrix.

Parameters
lengthDimension of the newly created vector.
Returns
A newly created vector of the specified dimension and of the same type as the current matrix.
override VectorBase IG.Num.Matrix.GetNewVectorBase ( int  length)
inlinevirtual

Creates and returns a new vector with the specified dimension, and of the type that is consistent with the type of the current matrix.

Parameters
lengthDimension of the newly created vector.
Returns
A newly created vector of the specified dimension and of the same type as the current matrix.

Implements IG.Num.MatrixBase.

static void IG.Num.Matrix.Copy ( Matrix  a,
ref Matrix  result 
)
inlinestatic

Copies components of a matrix to another matrix. Resulting matrix is allocated or reallocated if necessary. REMARK: This method is implemented because it is more efficient than the corresponding method in MatrixBase (due to matched types).

Parameters
aOriginal matrix.
resultMaterix where copy will be stored. Dimensions must match dimensions of a.

References IG.Num.Matrix.ColumnCount, IG.Num.Matrix.GetNewThis(), and IG.Num.Matrix.RowCount.

static void IG.Num.Matrix.KroneckerProduct ( Matrix  m1,
Matrix  m2,
Matrix  result 
)
inlinestatic

Kronecker product, A(m*n)*B(p*q)=C(mp*nq) Result is a block matrix with as many blocks as there are elements of the first matrix, each block being a product of the second matrix by an element of the first matrix. Both operands must be defined (non-null).

Parameters
m1First operand.
m2Second operand.
result

References IG.Num.Matrix.ColumnCount, and IG.Num.Matrix.RowCount.

static void IG.Num.Matrix.KroneckerMultiply ( Matrix  m1,
Matrix  m2,
Matrix  result 
)
inlinestatic

Kronecker or tensor product, A(m*n)*B(p*q)=C(mp*nq) Result is a block matrix with as many blocks as there are elements of the first matrix, each block being a product of the second matrix by an element of the first matrix. Both operands must be defined (non-null).

Parameters
m1First operand.
m2Second operand.
result
static void IG.Num.Matrix.TensorMultiply ( Matrix  m1,
Matrix  m2,
Matrix  result 
)
inlinestatic

Kronecker or tensor product, A(m*n)*B(p*q)=C(mp*nq) Result is a block matrix with as many blocks as there are elements of the first matrix, each block being a product of the second matrix by an element of the first matrix. Both operands must be defined (non-null).

Parameters
m1First operand.
m2Second operand.
result
virtual string IG.Num.Matrix.ToStringBase ( )
inlinevirtual

Returns a string representation of this vector in a readable form.

override int IG.Num.Matrix.GetHashCode ( )
inline

Returns the hashRet code (hashRet function) of the current matrix.

This method calls the MatrixBase.GetHashCode() to calculate the hashRet code, which is standard for all implementations of the IMatrix interface.

Two matrices that have the same dimensions and equal elements will produce the same hashRet codes.

Probability that two different matrices will produce the same hashRet code is small but it exists.

Overrides the object.GetHashCode method.

References IG.Num.MatrixBase.GetHashCode().

override bool IG.Num.Matrix.Equals ( Object  obj)
inline

Returns a value indicating whether the specified object is equal to the current matrix.

True is returned if the object is a non-null matrix (i.e. it implements the IMatrix interface), and has the same dimension and equal elements as the current matrix.

This method calls the MatrixBase.Equals(Object) to obtain the returned value, which is standard for all implementations of the IMatrix interface.

Overrides the object.Equals(Object) method.

References IG.Num.MatrixBase.Equals().

static new void IG.Num.Matrix.TestStaticMethodSpecific ( )
inlinestatic

A test method, just prints some output.

Member Data Documentation

double [][] IG.Num.Matrix._elements
protected

Matrix elements.

int IG.Num.Matrix._rowCount
protected

Number of rows.

int IG.Num.Matrix._columnCount
protected

Number of columns.

Matrix_MathNetNumerics IG.Num.Matrix._copyMathNetNumerics = null
protected

Copy of the current matrix as Math.Net numerics matrix.

bool IG.Num.Matrix._mathNetNumericsConsistent = false
protected

Whetherr the Math.Net Matrix copy is consistent.

Property Documentation

override int IG.Num.Matrix.ColumnCount
get

Gets the second dimension (number of columns) of the matrix.

Referenced by IG.Num.AffineTransformationSquare.AffineTransformationSquare(), IG.Num.Matrix.Copy(), and IG.Num.Matrix.KroneckerProduct().

virtual int IG.Num.Matrix.RowCountSetter
setprotected

Sets the first dimension (number of rows) of the matrix. This setter must be used very restrictively - only in setters that can change matrix dimensions. Setter is defined separately from getter because the base class' property does not define a getter.

virtual int IG.Num.Matrix.ColumnCountSetter
setprotected

Sets the first dimension (number of rows) of the matrix. This setter must be used very restrictively - only in setters that can change matrix dimensions. Setter is defined separately from getter because the base class' property does not define a getter.

override double IG.Num.Matrix.this[int i, int j]
getset

Gets or set the element indexed by (i, j) in the Matrix.

Parameters
iRow index.
jColumn index.

Component access is currently a bit slower because it works indirectly through the base matrix' access. This could be corrected if we could assign the components array _base._data to some internal variable, but there is no way to access the component array of a Math.Net matrix due to its protection level (which is currently default, i.e. private, but should be at least protected in order to solve this problem).

virtual bool IG.Num.Matrix.IsCopyMathNetNumericsConsistent
getprotected set

Tells whether the internal MathNet.Numerics matrix representation of the current matrix is consistent with the current matrix. The MathNet.Numerics representation is used for operations that are used from that library such as different kinds of decompositions.

Currrently, an internal flag indicating consistency of the MathNet matrix is not used. Every time this property is required, the consistence is actually verified by comparing values. There may be derived matrix classes where the falg is actually used. These must keep track when anything in the matrix changes and invalidate the flag on each such event.

virtual Matrix_MathNetNumerics IG.Num.Matrix.CopyMathNetNumerics
get

Gets the internal MathNet.Numerics representation of the current matrix. Representation is created on demand. However, the same copy is returned as long as it is consistent with the current matrix. Use GetCopyMathNet() to create a new copy each time.

new Matrix IG.Num.Matrix.T
get

Returns a new matrix that is transpose of the current matrix. Re-implemented here for efficiency (hides the base class property).

override double IG.Num.Matrix.NormEuclidean
get

Gets the Forbenius norm of the matrix, the square root of sum of squares of all elements.

override double IG.Num.Matrix.Norm
get

Gets the Forbenius norm of the matrix, the square root of sum of squares of all elements.

virtual double IG.Num.Matrix.Norm1
get

Gets the one norm of the matrix, the maximum column sum of absolute values.

virtual double IG.Num.Matrix.Norm2
get

Gets the two norm of the matrix, i.e. its maximal singular value.

virtual double IG.Num.Matrix.NormInf
get

Gets the infinity norm of the matrix, the maximum row sum of absolute values.


The documentation for this class was generated from the following file: