Static Eigen-based linear-algebra helpers used across MATHLIB and the inverse solvers.
More...
#include <linalg.h>
|
| static Eigen::VectorXd | combine_xyz (const Eigen::VectorXd &vec) |
| static double | getConditionNumber (const Eigen::MatrixXd &A, Eigen::VectorXd &s) |
| static double | getConditionSlope (const Eigen::MatrixXd &A, Eigen::VectorXd &s) |
| static void | get_whitener (Eigen::MatrixXd &A, bool pca, QString ch_type, Eigen::VectorXd &eig, Eigen::MatrixXd &eigvec) |
| static void | get_whitener (Eigen::MatrixXd &A, bool pca, const std::string &ch_type, Eigen::VectorXd &eig, Eigen::MatrixXd &eigvec) |
| static Eigen::VectorXi | intersect (const Eigen::VectorXi &v1, const Eigen::VectorXi &v2, Eigen::VectorXi &idx_sel) |
| static Eigen::SparseMatrix< double > | make_block_diag (const Eigen::MatrixXd &A, qint32 n) |
| template<typename T> |
| static Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > | pinv (const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > &a) |
| static qint32 | rank (const Eigen::MatrixXd &A, double tol=1e-8) |
| template<typename T> |
| static Eigen::VectorXi | sort (Eigen::Matrix< T, Eigen::Dynamic, 1 > &v, bool desc=true) |
| template<typename T> |
| static Eigen::VectorXi | sort (Eigen::Matrix< T, Eigen::Dynamic, 1 > &v_prime, Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > &mat, bool desc=true) |
| template<typename T> |
| static std::vector< Eigen::Triplet< T > > | sortrows (const std::vector< Eigen::Triplet< T > > &A, qint32 column=0) |
| template<typename T> |
| static bool | compareIdxValuePairBiggerThan (const std::pair< int, T > &lhs, const std::pair< int, T > &rhs) |
| template<typename T> |
| static bool | compareIdxValuePairSmallerThan (const std::pair< int, T > &lhs, const std::pair< int, T > &rhs) |
| template<typename T> |
| static bool | compareTripletFirstEntry (const Eigen::Triplet< T > &lhs, const Eigen::Triplet< T > &rhs) |
| template<typename T> |
| static bool | compareTripletSecondEntry (const Eigen::Triplet< T > &lhs, const Eigen::Triplet< T > &rhs) |
Static Eigen-based linear-algebra helpers used across MATHLIB and the inverse solvers.
Static linear-algebra utilities (condition numbers, block-diagonal sparse assembly, xyz reductions, stable index sort) layered on top of Eigen for use across MATHLIB, FWDLIB and INVERSELIB.
Definition at line 70 of file linalg.h.
◆ IdxIntValue
Typedef of a pair of ints.
Definition at line 73 of file linalg.h.
◆ ~Linalg()
| UTILSLIB::Linalg::~Linalg |
( |
| ) |
|
|
default |
◆ combine_xyz()
| VectorXd Linalg::combine_xyz |
( |
const Eigen::VectorXd & | vec | ) |
|
|
static |
Compute the three Cartesian components of a vector together.
- Parameters
-
| [in] | vec | Input row vector [ x1 y1 z1 ... x_n y_n z_n ]. |
- Returns
- Output vector [x1^2+y1^2+z1^2 ... x_n^2+y_n^2+z_n^2 ].
Definition at line 57 of file linalg.cpp.
◆ compareIdxValuePairBiggerThan()
template<typename T>
| bool UTILSLIB::Linalg::compareIdxValuePairBiggerThan |
( |
const std::pair< int, T > & | lhs, |
|
|
const std::pair< int, T > & | rhs ) |
|
inlinestatic |
Compares two index-value-pairs (greater-than).
Definition at line 348 of file linalg.h.
◆ compareIdxValuePairSmallerThan()
template<typename T>
| bool UTILSLIB::Linalg::compareIdxValuePairSmallerThan |
( |
const std::pair< int, T > & | lhs, |
|
|
const std::pair< int, T > & | rhs ) |
|
inlinestatic |
Compares two index-value-pairs (less-than).
Definition at line 357 of file linalg.h.
◆ compareTripletFirstEntry()
template<typename T>
| bool UTILSLIB::Linalg::compareTripletFirstEntry |
( |
const Eigen::Triplet< T > & | lhs, |
|
|
const Eigen::Triplet< T > & | rhs ) |
|
inlinestatic |
Compares triplet first entry (row).
Definition at line 366 of file linalg.h.
◆ compareTripletSecondEntry()
template<typename T>
| bool UTILSLIB::Linalg::compareTripletSecondEntry |
( |
const Eigen::Triplet< T > & | lhs, |
|
|
const Eigen::Triplet< T > & | rhs ) |
|
inlinestatic |
Compares triplet second entry (column).
Definition at line 375 of file linalg.h.
◆ get_whitener() [1/2]
| void UTILSLIB::Linalg::get_whitener |
( |
Eigen::MatrixXd & | A, |
|
|
bool | pca, |
|
|
const std::string & | ch_type, |
|
|
Eigen::VectorXd & | eig, |
|
|
Eigen::MatrixXd & | eigvec ) |
|
static |
Returns the whitener of a given matrix.
- Parameters
-
| [in] | A | Matrix to compute the whitener from. |
| [in] | pca | Perform a PCA. |
| [in] | ch_type | Channel type string. |
| [out] | eig | Eigenvalues. |
| [out] | eigvec | Eigenvectors (transposed). |
◆ get_whitener() [2/2]
| void UTILSLIB::Linalg::get_whitener |
( |
Eigen::MatrixXd & | A, |
|
|
bool | pca, |
|
|
QString | ch_type, |
|
|
Eigen::VectorXd & | eig, |
|
|
Eigen::MatrixXd & | eigvec ) |
|
static |
Returns the whitener of a given matrix.
- Parameters
-
| [in] | A | Matrix to compute the whitener from. |
| [in] | pca | Perform a PCA. |
| [in] | ch_type | Channel type string. |
| [out] | eig | Eigenvalues. |
| [out] | eigvec | Eigenvectors (transposed). |
◆ getConditionNumber()
| double Linalg::getConditionNumber |
( |
const Eigen::MatrixXd & | A, |
|
|
Eigen::VectorXd & | s ) |
|
static |
Returns the condition number of a given matrix.
- Parameters
-
| [in] | A | Matrix to compute the condition number from. |
| [out] | s | Singular values of A. |
- Returns
- the condition number.
Definition at line 79 of file linalg.cpp.
◆ getConditionSlope()
| double Linalg::getConditionSlope |
( |
const Eigen::MatrixXd & | A, |
|
|
Eigen::VectorXd & | s ) |
|
static |
Returns the condition slope of a given matrix.
- Parameters
-
| [in] | A | Matrix to compute the condition number from. |
| [out] | s | Singular values of A. |
- Returns
- the condition slope.
Definition at line 92 of file linalg.cpp.
◆ intersect()
| VectorXi Linalg::intersect |
( |
const Eigen::VectorXi & | v1, |
|
|
const Eigen::VectorXi & | v2, |
|
|
Eigen::VectorXi & | idx_sel ) |
|
static |
Find the intersection of two vectors.
- Parameters
-
| [in] | v1 | Input vector 1. |
| [in] | v2 | Input vector 2. |
| [out] | idx_sel | Index of intersection based on v1. |
- Returns
- the sorted, unique values that are in both of the input arrays.
Definition at line 163 of file linalg.cpp.
◆ make_block_diag()
| SparseMatrix< double > Linalg::make_block_diag |
( |
const Eigen::MatrixXd & | A, |
|
|
qint32 | n ) |
|
static |
Make a sparse block diagonal matrix.
Returns a sparse block diagonal, diagonalized from the elements in "A". "A" is ma x na, comprising bdn=(na/"n") blocks of submatrices. Each submatrix is ma x "n", and these submatrices are placed down the diagonal of the matrix.
- Parameters
-
| [in] | A | Matrix which should be diagonalized. |
| [in] | n | Columns of the submatrices. |
- Returns
- A sparse block diagonal, diagonalized from the elements in "A".
Definition at line 198 of file linalg.cpp.
◆ pinv()
template<typename T>
| Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > UTILSLIB::Linalg::pinv |
( |
const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > & | a | ) |
|
|
static |
Creates the pseudo inverse of a matrix.
- Parameters
-
| [in] | a | Matrix to compute the pseudo inverse of. |
- Returns
- the pseudo inverse of a.
Definition at line 384 of file linalg.h.
◆ rank()
| qint32 Linalg::rank |
( |
const Eigen::MatrixXd & | A, |
|
|
double | tol = 1e-8 ) |
|
static |
Returns the rank of a matrix A.
- Parameters
-
| [in] | A | Matrix to get the rank from. |
| [in] | tol | Relative threshold: biggest singular value multiplied with tol is smallest singular value considered non-zero. |
- Returns
- rank of matrix A.
Definition at line 233 of file linalg.cpp.
◆ sort() [1/2]
template<typename T>
| Eigen::VectorXi UTILSLIB::Linalg::sort |
( |
Eigen::Matrix< T, Eigen::Dynamic, 1 > & | v, |
|
|
bool | desc = true ) |
|
static |
Sorts a vector (ascending order) in place and returns the track of the original indices.
- Parameters
-
| [in,out] | v | Vector to sort; it's sorted in place. |
| [in] | desc | If true its sorted in a descending order, otherwise ascending (default = true). |
- Returns
- Vector of the original indices in the new order.
Definition at line 280 of file linalg.h.
◆ sort() [2/2]
template<typename T>
| Eigen::VectorXi UTILSLIB::Linalg::sort |
( |
Eigen::Matrix< T, Eigen::Dynamic, 1 > & | v_prime, |
|
|
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > & | mat, |
|
|
bool | desc = true ) |
|
static |
Sorts a vector and a corresponding matrix in place and returns the track of the original indices. The matrix is sorted along the columns using the vector values for comparison.
- Parameters
-
| [in,out] | v_prime | Vector to sort (sorted in place). |
| [in,out] | mat | Matrix to sort (sorted in place). |
| [in] | desc | If true its sorted in a descending order, otherwise ascending (default = true). |
- Returns
- Vector of the original indices in the new order.
Definition at line 309 of file linalg.h.
◆ sortrows()
template<typename T>
| std::vector< Eigen::Triplet< T > > UTILSLIB::Linalg::sortrows |
( |
const std::vector< Eigen::Triplet< T > > & | A, |
|
|
qint32 | column = 0 ) |
|
static |
Sort rows in ascending order.
- Parameters
-
| [in] | A | Triplet vector to sort. |
| [in] | column | Sorts the triplet vector based on the column specified. |
- Returns
- Sorted copy of the triplet vector.
Definition at line 329 of file linalg.h.
The documentation for this class was generated from the following files: