CGAL 6.1 - CGAL and Solvers

Loading...
Searching...
No Matches
List of all members | Public Types | Static Public Member Functions
DiagonalizeTraits< FT, dim > Concept Reference
Reference Manual » Concepts

## Definition

template<typename FT, unsigned int dim = 3>
class DiagonalizeTraits< FT, dim >

Concept providing functions to extract eigenvectors and eigenvalues from covariance matrices represented by an array `a`, using symmetric diagonalization.

For example, a matrix of dimension 3 is defined as follows:

\( \begin{bmatrix} a[0] & a[1] & a[2] \\ a[1] & a[3] & a[4] \\ a[2] & a[4] & a[5] \\ \end{bmatrix}\)

Template Parameters

  FT | Number type
  dim | Dimension of the matrices and vectors

Has models
  `CGAL::Eigen_diagonalize_traits`

## Public Types
typedef std::array< FT, dim > | Vector
typedef std::array< FT, dim *dim > | Matrix
typedef std::array< FT,(dim *(dim+1)/2)> | Covariance_matrix

## Static Public Member Functions
static bool | diagonalize_selfadjoint_covariance_matrix (const Covariance_matrix &cov, Vector &eigenvalues)
| Fill `eigenvalues` with the eigenvalues of the covariance matrix represented by `cov`.
static bool | diagonalize_selfadjoint_covariance_matrix (const Covariance_matrix &cov, Vector &eigenvalues, Matrix &eigenvectors)
| Fill `eigenvalues` with the eigenvalues and `eigenvectors` with the eigenvectors of the covariance matrix represented by `cov`.
static bool | extract_largest_eigenvector_of_covariance_matrix (const Covariance_matrix &cov, Vector &normal)
| Extract the eigenvector associated to the largest eigenvalue of the covariance matrix represented by `cov`.

## Member Function Documentation

## ◆ diagonalize_selfadjoint_covariance_matrix() [1/2]

template<typename FT , unsigned int dim = 3>

static bool DiagonalizeTraits< FT, dim >::diagonalize_selfadjoint_covariance_matrix | ( | const Covariance_matrix & | cov,
|  | Vector & | eigenvalues
| ) |  |
| static

Fill `eigenvalues` with the eigenvalues of the covariance matrix represented by `cov`.

Eigenvalues are sorted by increasing order.

Returns
  `true` if the operation was successful and `false` otherwise.

## ◆ diagonalize_selfadjoint_covariance_matrix() [2/2]

template<typename FT , unsigned int dim = 3>

static bool DiagonalizeTraits< FT, dim >::diagonalize_selfadjoint_covariance_matrix | ( | const Covariance_matrix & | cov,
|  | Vector & | eigenvalues,
|  | Matrix & | eigenvectors
| ) |  |
| static

Fill `eigenvalues` with the eigenvalues and `eigenvectors` with the eigenvectors of the covariance matrix represented by `cov`.

Eigenvalues are sorted by increasing order.

Returns
  `true` if the operation was successful and `false` otherwise.

## ◆ extract_largest_eigenvector_of_covariance_matrix()

template<typename FT , unsigned int dim = 3>

static bool DiagonalizeTraits< FT, dim >::extract_largest_eigenvector_of_covariance_matrix | ( | const Covariance_matrix & | cov,
|  | Vector & | normal
| ) |  |
| static

Extract the eigenvector associated to the largest eigenvalue of the covariance matrix represented by `cov`.

Returns
  `true` if the operation was successful and `false` otherwise.