Op_princomp_cov

Classes

class  op_princomp_cov

Functions

template<typename eT >
static void op_princomp_cov::direct_princomp_cov (Mat< eT > &coeff_out, Col< eT > &latent_out, Col< eT > &explained_out, const Mat< eT > &in)
 principal component analysis of a covariance matrix -- 3 arguments version computation is done via singular value decomposition coeff_out -> principal component coefficients latent_out -> principal component variances explained_out -> percentage of the total variance explained by each principal component
template<typename eT >
static void op_princomp_cov::direct_princomp_cov (Mat< eT > &coeff_out, Col< eT > &latent_out, const Mat< eT > &in)
 principal component analysis of a covariance matrix -- 2 arguments version computation is done via singular value decomposition coeff_out -> principal component coefficients latent_out -> principal component variances
template<typename eT >
static void op_princomp_cov::direct_princomp_cov (Mat< eT > &coeff_out, const Mat< eT > &in)
 principal component analysis of a covariance matrix -- 1 argument version computation is done via singular value decomposition coeff_out -> principal component coefficients
template<typename T >
static void op_princomp_cov::direct_princomp_cov (Mat< std::complex< T > > &coeff_out, Col< T > &latent_out, Col< T > &explained_out, const Mat< std::complex< T > > &in)
 principal component analysis of a covariance matrix -- 3 arguments complex version computation is done via singular value decomposition coeff_out -> principal component coefficients latent_out -> principal component variances explained_out -> percentage of the total variance explained by each principal component
template<typename T >
static void op_princomp_cov::direct_princomp_cov (Mat< std::complex< T > > &coeff_out, Col< T > &latent_out, const Mat< std::complex< T > > &in)
 principal component analysis of a covariance matrix -- 2 arguments complex version computation is done via singular value decomposition coeff_out -> principal component coefficients latent_out -> principal component variances
template<typename T >
static void op_princomp_cov::direct_princomp_cov (Mat< std::complex< T > > &coeff_out, const Mat< std::complex< T > > &in)
 principal component analysis of a covariance matrix -- 1 argument complex version computation is done via singular value decomposition coeff_out -> principal component coefficients
template<typename T1 >
static void op_princomp_cov::apply (Mat< typename T1::elem_type > &out, const Op< T1, op_princomp_cov > &in)

Function Documentation

template<typename eT >
void op_princomp_cov::direct_princomp_cov ( Mat< eT > &  coeff_out,
Col< eT > &  latent_out,
Col< eT > &  explained_out,
const Mat< eT > &  in 
) [inline, static, inherited]

principal component analysis of a covariance matrix -- 3 arguments version computation is done via singular value decomposition coeff_out -> principal component coefficients latent_out -> principal component variances explained_out -> percentage of the total variance explained by each principal component

Definition at line 33 of file op_princomp_cov_meat.hpp.

References arma_print(), cov(), Mat< eT >::reset(), sum(), and svd().

00039   {
00040   arma_extra_debug_sigprint();
00041   
00042   // computation of the covariance matrix
00043   const Mat<eT> in_cov = cov(in);
00044   
00045   // singular value decomposition
00046   Mat<eT> U;
00047 
00048   const bool svd_ok = svd(U, latent_out, coeff_out, in_cov);
00049     
00050   if(svd_ok == false)
00051     {
00052     arma_print("princomp_cov(): singular value decomposition failed");
00053       
00054     coeff_out.reset();
00055     latent_out.reset();
00056     explained_out.reset();
00057       
00058     return;
00059     }
00060   
00061   explained_out =  (eT(100) * latent_out) / sum(latent_out);
00062   }

template<typename eT >
void op_princomp_cov::direct_princomp_cov ( Mat< eT > &  coeff_out,
Col< eT > &  latent_out,
const Mat< eT > &  in 
) [inline, static, inherited]

principal component analysis of a covariance matrix -- 2 arguments version computation is done via singular value decomposition coeff_out -> principal component coefficients latent_out -> principal component variances

Definition at line 75 of file op_princomp_cov_meat.hpp.

References arma_print(), cov(), Mat< eT >::reset(), and svd().

00080   {
00081   arma_extra_debug_sigprint();
00082   
00083   // computation of the covariance matrix
00084   const Mat<eT> in_cov = cov(in);
00085   
00086   // singular value decomposition
00087   Mat<eT> U;
00088 
00089   const bool svd_ok = svd(U, latent_out, coeff_out, in_cov);
00090     
00091   if(svd_ok == false)
00092     {
00093     arma_print("princomp_cov(): singular value decomposition failed");
00094       
00095     coeff_out.reset();
00096     latent_out.reset();
00097       
00098     return;
00099     }
00100 
00101   }

template<typename eT >
void op_princomp_cov::direct_princomp_cov ( Mat< eT > &  coeff_out,
const Mat< eT > &  in 
) [inline, static, inherited]

principal component analysis of a covariance matrix -- 1 argument version computation is done via singular value decomposition coeff_out -> principal component coefficients

Definition at line 113 of file op_princomp_cov_meat.hpp.

References arma_print(), cov(), Mat< eT >::reset(), and svd().

Referenced by apply(), and princomp_cov().

00117   {
00118   arma_extra_debug_sigprint();
00119   
00120   // computation of the covariance matrix
00121   const Mat<eT> in_cov = cov(in);
00122   
00123   // singular value decomposition
00124   Mat<eT> U;
00125   Col<eT> s;
00126 
00127   const bool svd_ok = svd(U, s, coeff_out, in_cov);
00128     
00129   if(svd_ok == false)
00130     {
00131     arma_print("princomp_cov(): singular value decomposition failed");
00132       
00133     coeff_out.reset();
00134      
00135     return;
00136     }
00137   
00138   }

template<typename T >
void op_princomp_cov::direct_princomp_cov ( Mat< std::complex< T > > &  coeff_out,
Col< T > &  latent_out,
Col< T > &  explained_out,
const Mat< std::complex< T > > &  in 
) [inline, static, inherited]

principal component analysis of a covariance matrix -- 3 arguments complex version computation is done via singular value decomposition coeff_out -> principal component coefficients latent_out -> principal component variances explained_out -> percentage of the total variance explained by each principal component

Definition at line 152 of file op_princomp_cov_meat.hpp.

References arma_print(), cov(), Mat< eT >::reset(), sum(), and svd().

00158   {
00159   arma_extra_debug_sigprint();
00160   
00161   typedef std::complex<T> eT;
00162   
00163   // computation of the covariance matrix
00164   const Mat<eT> in_cov = cov(in);
00165   
00166   // singular value decomposition
00167   Mat<eT> U;
00168 
00169   const bool svd_ok = svd(U, latent_out, coeff_out, in_cov);
00170     
00171   if(svd_ok == false)
00172     {
00173     arma_print("princomp_cov(): singular value decomposition failed");
00174       
00175     coeff_out.reset();
00176     latent_out.reset();
00177     explained_out.reset();
00178       
00179     return;
00180     }
00181   
00182   explained_out =  (T(100) * latent_out) / sum(latent_out);
00183   }

template<typename T >
void op_princomp_cov::direct_princomp_cov ( Mat< std::complex< T > > &  coeff_out,
Col< T > &  latent_out,
const Mat< std::complex< T > > &  in 
) [inline, static, inherited]

principal component analysis of a covariance matrix -- 2 arguments complex version computation is done via singular value decomposition coeff_out -> principal component coefficients latent_out -> principal component variances

Definition at line 196 of file op_princomp_cov_meat.hpp.

References arma_print(), cov(), Mat< eT >::reset(), and svd().

00201   {
00202   arma_extra_debug_sigprint();
00203   
00204   typedef std::complex<T> eT;
00205   
00206   // computation of the covariance matrix
00207   const Mat<eT> in_cov = cov(in);
00208   
00209   // singular value decomposition
00210   Mat<eT> U;
00211 
00212   const bool svd_ok = svd(U, latent_out, coeff_out, in_cov);
00213     
00214   if(svd_ok == false)
00215     {
00216     arma_print("princomp_cov(): singular value decomposition failed");
00217       
00218     coeff_out.reset();
00219     latent_out.reset();
00220       
00221     return;
00222     }
00223 
00224   }

template<typename T >
void op_princomp_cov::direct_princomp_cov ( Mat< std::complex< T > > &  coeff_out,
const Mat< std::complex< T > > &  in 
) [inline, static, inherited]

principal component analysis of a covariance matrix -- 1 argument complex version computation is done via singular value decomposition coeff_out -> principal component coefficients

Definition at line 236 of file op_princomp_cov_meat.hpp.

References arma_print(), cov(), Mat< eT >::reset(), and svd().

00240   {
00241   arma_extra_debug_sigprint();
00242   
00243   typedef std::complex<T> eT;
00244   
00245   // computation of the covariance matrix
00246   const Mat<eT> in_cov = cov(in);
00247   
00248   // singular value decomposition
00249   Mat<eT> U;
00250   Col<T> s;
00251 
00252   const bool svd_ok = svd(U, s, coeff_out, in_cov);
00253     
00254   if(svd_ok == false)
00255     {
00256     arma_print("princomp_cov(): singular value decomposition failed");
00257       
00258     coeff_out.reset();
00259       
00260     return;
00261     }
00262   
00263   }

template<typename T1 >
void op_princomp_cov::apply ( Mat< typename T1::elem_type > &  out,
const Op< T1, op_princomp_cov > &  in 
) [inline, static, inherited]

Definition at line 271 of file op_princomp_cov_meat.hpp.

References direct_princomp_cov(), unwrap_check< T1 >::M, and Op< T1, op_type >::m.

00275   {
00276   arma_extra_debug_sigprint();
00277   
00278   typedef typename T1::elem_type eT;
00279   
00280   const unwrap_check<T1> tmp(in.m, out);
00281   const Mat<eT>& A     = tmp.M;
00282   
00283   op_princomp_cov::direct_princomp_cov(out, A);  
00284   }