Classes | |
| struct | EigenLevenbergMarquardtOptions |
| struct | EigenLevenbergMarquardtResult |
| class | VectorContainer |
Functions | |
| template<typename TMatrix> | |
| void | CanonicalizeColumnSignsPaired (TMatrix &u, TMatrix &paired) |
| template<typename T> | |
| void | CanonicalizeEigenvectorColumnSigns (vnl_matrix< T > &V) |
| const char * | EigenComputationInfoString (Eigen::ComputationInfo info) |
| ITKOptimizers_EXPORT EigenLevenbergMarquardtResult | EigenLevenbergMarquardtSolve (unsigned int numberOfParameters, unsigned int numberOfResiduals, const std::function< void(const double *, double *)> &residual, const std::function< void(const double *, double *)> &jacobian, const vnl_vector< double > &initialPosition, const EigenLevenbergMarquardtOptions &options) |
| template<typename TValueType, unsigned int VRows, unsigned int VColumns> | |
| const TValueType * | GetPointerToMatrixData (const itk::Matrix< TValueType, VRows, VColumns > &inputMatrix) |
| template<typename TValueType> | |
| const TValueType * | GetPointerToMatrixData (const vnl_matrix< TValueType > &inputMatrix) |
| template<typename TValueType, unsigned int VRows, unsigned int VColumns> | |
| const TValueType * | GetPointerToMatrixData (const vnl_matrix_fixed< TValueType, VRows, VColumns > &inputMatrix) |
| template<typename QMatrix> | |
| void | permuteColumnsWithSortIndices (QMatrix &eigenVectors, const std::vector< int > &indicesSortPermutations) |
| template<typename TArray> | |
| std::vector< int > | sortEigenValuesByMagnitude (TArray &eigenValues, const unsigned int numberOfElements) |
| void itk::detail::CanonicalizeColumnSignsPaired | ( | TMatrix & | u, |
| TMatrix & | paired ) |
Same canonicalization as CanonicalizeEigenvectorColumnSigns, applied to u, with the identical per-column flip mirrored onto paired so a factor pair (e.g. the U and V of an SVD) stays consistent. Templated on the matrix type so it serves vnl_matrix and vnl_matrix_fixed; the sign is well-defined only when the leading per-column magnitude is unambiguous (distinct singular values).
Definition at line 62 of file itkEigenDecompositionSignConvention.h.
Referenced by itk::Math::SVD(), and itk::Math::SVD().
| void itk::detail::CanonicalizeEigenvectorColumnSigns | ( | vnl_matrix< T > & | V | ) |
Canonicalize the sign of every eigenvector column of V so that its largest-magnitude entry is positive (tie-break by lowest row index). An eigenvector's sign is mathematically arbitrary and otherwise depends on solver internals and SIMD width; pinning it this way makes a real-valued eigendecomposition bit-reproducible across platforms.
Definition at line 34 of file itkEigenDecompositionSignConvention.h.
Referenced by itk::GeneralizedEigenDecomposition< TReal >::GeneralizedEigenDecomposition(), and itk::SymmetricEigenDecomposition< T >::SymmetricEigenDecomposition().
|
inline |
Human-readable name and likely cause for an Eigen solver status, so a thrown decomposition error names the failure mode instead of a raw code.
Definition at line 30 of file itkEigenDecompositionSolverInfo.h.
Referenced by itk::GeneralizedEigenDecomposition< TReal >::GeneralizedEigenDecomposition(), itk::RealEigenDecomposition< TReal >::RealEigenDecomposition(), and itk::SymmetricEigenDecomposition< T >::SymmetricEigenDecomposition().
| ITKOptimizers_EXPORT EigenLevenbergMarquardtResult itk::detail::EigenLevenbergMarquardtSolve | ( | unsigned int | numberOfParameters, |
| unsigned int | numberOfResiduals, | ||
| const std::function< void(const double *, double *)> & | residual, | ||
| const std::function< void(const double *, double *)> & | jacobian, | ||
| const vnl_vector< double > & | initialPosition, | ||
| const EigenLevenbergMarquardtOptions & | options ) |
Solve a nonlinear least-squares problem with Eigen's MINPACK-port Levenberg-Marquardt (unsupported/Eigen/NonLinearOptimization).
This is the algorithm-identical counterpart to vnl_levenberg_marquardt (both are ports of MINPACK lmdif/lmder). Eigen is confined to the implementation; no Eigen type appears in this interface (see issue #6230).
| numberOfParameters | n, the size of x. |
| numberOfResiduals | m, the size of the residual vector. |
| residual | Fills m residuals from n parameters (raw pointers). |
| jacobian | Fills the m-by-n Jacobian, row-major, from n parameters. If empty, forward differences are used. |
| initialPosition | Starting x (size n). |
| options | Tolerances / evaluation limit. |
| const TValueType * itk::detail::GetPointerToMatrixData | ( | const itk::Matrix< TValueType, VRows, VColumns > & | inputMatrix | ) |
Definition at line 51 of file itkSymmetricEigenAnalysis.h.
References itk::Matrix< T, VRows, VColumns >::GetVnlMatrix().
| const TValueType * itk::detail::GetPointerToMatrixData | ( | const vnl_matrix< TValueType > & | inputMatrix | ) |
Definition at line 44 of file itkSymmetricEigenAnalysis.h.
| const TValueType * itk::detail::GetPointerToMatrixData | ( | const vnl_matrix_fixed< TValueType, VRows, VColumns > & | inputMatrix | ) |
Definition at line 38 of file itkSymmetricEigenAnalysis.h.
| void itk::detail::permuteColumnsWithSortIndices | ( | QMatrix & | eigenVectors, |
| const std::vector< int > & | indicesSortPermutations ) |
Permute a eigenVectors matrix according to the permutation indices computed from the output of a sort function like
| QMatrix | a Eigen3 matrix |
| eigenVectors | stored in columns |
| indicesSortPermutations | container with the permutations from the output of a sort function. |
Definition at line 101 of file itkSymmetricEigenAnalysis.h.
Referenced by itk::SymmetricEigenAnalysis< TInput, TOutput >::ComputeEigenValuesAndVectorsWithEigenLibraryImpl(), itk::SymmetricEigenAnalysis< TInput, TOutput >::ComputeEigenValuesAndVectorsWithEigenLibraryImpl(), itk::SymmetricEigenAnalysisFixedDimension< Dimension, MatrixType, EigenValuesArrayType, EigenVectorsMatrixType >::ComputeEigenValuesAndVectorsWithEigenLibraryImpl(), and itk::SymmetricEigenAnalysisFixedDimension< Dimension, MatrixType, EigenValuesArrayType, EigenVectorsMatrixType >::ComputeEigenValuesAndVectorsWithEigenLibraryImpl().
| std::vector< int > itk::detail::sortEigenValuesByMagnitude | ( | TArray & | eigenValues, |
| const unsigned int | numberOfElements ) |
Sort input to be ordered by magnitude, and returns container with the permutations required for the sorting.
For example, if input eigenValues = {10, 0, 40}, the output would be: {2,0,1} and the eigenValues would be modified in-place: {40, 10, 0}.
The permutations indices is used to order the matrix of eigenVectors.
| TArray | array type with operator [] |
| eigenValues | input array, requires operator [] |
| numberOfElements | size of array |
Definition at line 73 of file itkSymmetricEigenAnalysis.h.
References itk::Math::Absolute().
Referenced by itk::SymmetricEigenAnalysis< TInput, TOutput >::ComputeEigenValuesAndVectorsWithEigenLibraryImpl(), itk::SymmetricEigenAnalysis< TInput, TOutput >::ComputeEigenValuesAndVectorsWithEigenLibraryImpl(), itk::SymmetricEigenAnalysisFixedDimension< Dimension, MatrixType, EigenValuesArrayType, EigenVectorsMatrixType >::ComputeEigenValuesAndVectorsWithEigenLibraryImpl(), itk::SymmetricEigenAnalysisFixedDimension< Dimension, MatrixType, EigenValuesArrayType, EigenVectorsMatrixType >::ComputeEigenValuesAndVectorsWithEigenLibraryImpl(), itk::SymmetricEigenAnalysis< TInput, TOutput >::ComputeEigenValuesWithEigenLibraryImpl(), itk::SymmetricEigenAnalysis< TInput, TOutput >::ComputeEigenValuesWithEigenLibraryImpl(), itk::SymmetricEigenAnalysisFixedDimension< Dimension, MatrixType, EigenValuesArrayType, EigenVectorsMatrixType >::ComputeEigenValuesWithEigenLibraryImpl(), and itk::SymmetricEigenAnalysisFixedDimension< Dimension, MatrixType, EigenValuesArrayType, EigenVectorsMatrixType >::ComputeEigenValuesWithEigenLibraryImpl().