Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00017
00018
00019
00026 template<typename T1>
00027 inline
00028 bool
00029 princomp
00030 (
00031 Mat<typename T1::elem_type>& coeff_out,
00032 Mat<typename T1::elem_type>& score_out,
00033 Col<typename T1::pod_type>& latent_out,
00034 Col<typename T1::elem_type>& tsquared_out,
00035 const Base<typename T1::elem_type,T1>& X,
00036 const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0
00037 )
00038 {
00039 arma_extra_debug_sigprint();
00040
00041 typedef typename T1::elem_type eT;
00042
00043 const unwrap<T1> tmp(X.get_ref());
00044 const Mat<eT>& A = tmp.M;
00045
00046 const bool status = op_princomp::direct_princomp(coeff_out, score_out, latent_out, tsquared_out, A);
00047
00048 if(status == false)
00049 {
00050 coeff_out.reset();
00051 score_out.reset();
00052 latent_out.reset();
00053 tsquared_out.reset();
00054
00055 arma_bad("princomp(): failed to converge", false);
00056 }
00057
00058 return status;
00059 }
00060
00061
00062
00068 template<typename T1>
00069 inline
00070 bool
00071 princomp
00072 (
00073 Mat<typename T1::elem_type>& coeff_out,
00074 Mat<typename T1::elem_type>& score_out,
00075 Col<typename T1::pod_type>& latent_out,
00076 const Base<typename T1::elem_type,T1>& X,
00077 const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0
00078 )
00079 {
00080 arma_extra_debug_sigprint();
00081
00082 typedef typename T1::elem_type eT;
00083
00084 const unwrap<T1> tmp(X.get_ref());
00085 const Mat<eT>& A = tmp.M;
00086
00087 const bool status = op_princomp::direct_princomp(coeff_out, score_out, latent_out, A);
00088
00089 if(status == false)
00090 {
00091 coeff_out.reset();
00092 score_out.reset();
00093 latent_out.reset();
00094
00095 arma_bad("princomp(): failed to converge", false);
00096 }
00097
00098 return status;
00099 }
00100
00101
00102
00107 template<typename T1>
00108 inline
00109 bool
00110 princomp
00111 (
00112 Mat<typename T1::elem_type>& coeff_out,
00113 Mat<typename T1::elem_type>& score_out,
00114 const Base<typename T1::elem_type,T1>& X,
00115 const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0
00116 )
00117 {
00118 arma_extra_debug_sigprint();
00119
00120 typedef typename T1::elem_type eT;
00121
00122 const unwrap<T1> tmp(X.get_ref());
00123 const Mat<eT>& A = tmp.M;
00124
00125 const bool status = op_princomp::direct_princomp(coeff_out, score_out, A);
00126
00127 if(status == false)
00128 {
00129 coeff_out.reset();
00130 score_out.reset();
00131
00132 arma_bad("princomp(): failed to converge", false);
00133 }
00134
00135 return status;
00136 }
00137
00138
00139
00143 template<typename T1>
00144 inline
00145 bool
00146 princomp
00147 (
00148 Mat<typename T1::elem_type>& coeff_out,
00149 const Base<typename T1::elem_type,T1>& X,
00150 const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0
00151 )
00152 {
00153 arma_extra_debug_sigprint();
00154
00155 typedef typename T1::elem_type eT;
00156
00157 const unwrap<T1> tmp(X.get_ref());
00158 const Mat<eT>& A = tmp.M;
00159
00160 const bool status = op_princomp::direct_princomp(coeff_out, A);
00161
00162 if(status == false)
00163 {
00164 coeff_out.reset();
00165
00166 arma_bad("princomp(): failed to converge", false);
00167 }
00168
00169 return status;
00170 }
00171
00172
00173
00174 template<typename T1>
00175 inline
00176 const Op<T1, op_princomp>
00177 princomp
00178 (
00179 const Base<typename T1::elem_type,T1>& X,
00180 const typename arma_blas_type_only<typename T1::elem_type>::result* junk = 0
00181 )
00182 {
00183 arma_extra_debug_sigprint();
00184
00185 return Op<T1, op_princomp>(X.get_ref());
00186 }
00187
00188
00189