Essentia  2.1-beta5-dev
QR< Real > Class Template Reference

`#include <jama_qr.h>`

## Public Member Functions

QR (const TNT::Array2D< Real > &A)

int isFullRank () const

TNT::Array2D< Real > getHouseholder (void) const

TNT::Array2D< Real > getR () const

TNT::Array2D< Real > getQ () const

TNT::Array1D< Real > solve (const TNT::Array1D< Real > &b) const

TNT::Array2D< Real > solve (const TNT::Array2D< Real > &B) const

## Private Attributes

TNT::Array2D< Real > QR_

int m

int n

TNT::Array1D< Real > Rdiag

## Detailed Description

### template<class Real> class JAMA::QR< Real >

Classical QR Decompisition: for an m-by-n matrix A with m >= n, the QR decomposition is an m-by-n orthogonal matrix Q and an n-by-n upper triangular matrix R so that A = Q*R.

The QR decompostion always exists, even if the matrix does not have full rank, so the constructor will never fail. The primary use of the QR decomposition is in the least squares solution of nonsquare systems of simultaneous linear equations. This will fail if isFullRank() returns 0 (false).

The Q and R factors can be retrived via the getQ() and getR() methods. Furthermore, a solve() method is provided to find the least squares solution of Ax=b using the QR factors.

(Adapted from JAMA, a Java Matrix Library, developed by jointly by the Mathworks and NIST; see http://math.nist.gov/javanumerics/jama).

## ◆ QR()

 QR ( const TNT::Array2D< Real > & A )
inline

Create a QR factorization object for A.

Parameters
 A rectangular (m>=n) matrix.

## ◆ getHouseholder()

 TNT::Array2D getHouseholder ( void ) const
inline

Retreive the Householder vectors from QR factorization

Returns
lower trapezoidal matrix whose columns define the reflections

References QR< Real >::m, and QR< Real >::n.

## ◆ getQ()

 TNT::Array2D getQ ( ) const
inline

Generate and return the (economy-sized) orthogonal factor

Parameters
 Q the (ecnomy-sized) orthogonal factor (Q*R=A).

References QR< Real >::m, and QR< Real >::n.

## ◆ getR()

 TNT::Array2D getR ( ) const
inline

Return the upper triangular factor, R, of the QR factorization

Returns
R

References QR< Real >::n.

## ◆ isFullRank()

 int isFullRank ( ) const
inline

Flag to denote the matrix is of full rank.

Returns
1 if matrix is full rank, 0 otherwise.

References QR< Real >::n.

Referenced by QR< Real >::solve().

## ◆ solve() [1/2]

 TNT::Array1D solve ( const TNT::Array1D< Real > & b ) const
inline

Least squares solution of A*x = b

Parameters
 B m-length array (vector).
Returns
x n-length array (vector) that minimizes the two norm of Q*R*X-B. If B is non-conformant, or if QR.isFullRank() is false, the routine returns a null (0-length) vector.

## ◆ solve() [2/2]

 TNT::Array2D solve ( const TNT::Array2D< Real > & B ) const
inline

Least squares solution of A*X = B

Parameters
 B m x k Array (must conform).
Returns
X n x k Array that minimizes the two norm of Q*R*X-B. If B is non-conformant, or if QR.isFullRank() is false, the routine returns a null (0x0) array.

## ◆ m

 int m
private

Row and column dimensions. column dimension. row dimension.

Referenced by QR< Real >::getHouseholder(), QR< Real >::getQ(), QR< Real >::QR(), and QR< Real >::solve().

 int n
private

## ◆ QR_

 TNT::Array2D QR_
private

Array for internal storage of decomposition. internal array storage.

## ◆ Rdiag

 TNT::Array1D Rdiag
private

Array for internal storage of diagonal of R. diagonal of R.

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