$search
00001 // Copyright (C) 2010-2011 NICTA (www.nicta.com.au) 00002 // Copyright (C) 2010-2011 Conrad Sanderson 00003 // Copyright (C) 2010 Dimitrios Bouzas 00004 // 00005 // This file is part of the Armadillo C++ library. 00006 // It is provided without any warranty of fitness 00007 // for any purpose. You can redistribute this file 00008 // and/or modify it under the terms of the GNU 00009 // Lesser General Public License (LGPL) as published 00010 // by the Free Software Foundation, either version 3 00011 // of the License or (at your option) any later version. 00012 // (see http://www.opensource.org/licenses for more info) 00013 00014 00017 00018 00019 00020 class op_princomp 00021 { 00022 public: 00023 00024 // real element versions 00025 00026 template<typename eT> 00027 inline static bool 00028 direct_princomp 00029 ( 00030 Mat<eT>& coeff_out, 00031 const Mat<eT>& in 00032 ); 00033 00034 template<typename eT> 00035 inline static bool 00036 direct_princomp 00037 ( 00038 Mat<eT>& coeff_out, 00039 Mat<eT>& score_out, 00040 const Mat<eT>& in 00041 ); 00042 00043 template<typename eT> 00044 inline static bool 00045 direct_princomp 00046 ( 00047 Mat<eT>& coeff_out, 00048 Mat<eT>& score_out, 00049 Col<eT>& latent_out, 00050 const Mat<eT>& in 00051 ); 00052 00053 template<typename eT> 00054 inline static bool 00055 direct_princomp 00056 ( 00057 Mat<eT>& coeff_out, 00058 Mat<eT>& score_out, 00059 Col<eT>& latent_out, 00060 Col<eT>& tsquared_out, 00061 const Mat<eT>& in 00062 ); 00063 00064 00065 // complex element versions 00066 00067 template<typename T> 00068 inline static bool 00069 direct_princomp 00070 ( 00071 Mat< std::complex<T> >& coeff_out, 00072 const Mat< std::complex<T> >& in 00073 ); 00074 00075 template<typename T> 00076 inline static bool 00077 direct_princomp 00078 ( 00079 Mat< std::complex<T> >& coeff_out, 00080 Mat< std::complex<T> >& score_out, 00081 const Mat< std::complex<T> >& in 00082 ); 00083 00084 template<typename T> 00085 inline static bool 00086 direct_princomp 00087 ( 00088 Mat< std::complex<T> >& coeff_out, 00089 Mat< std::complex<T> >& score_out, 00090 Col<T>& latent_out, 00091 const Mat< std::complex<T> >& in 00092 ); 00093 00094 template<typename T> 00095 inline static bool 00096 direct_princomp 00097 ( 00098 Mat< std::complex<T> >& coeff_out, 00099 Mat< std::complex<T> >& score_out, 00100 Col<T>& latent_out, 00101 Col< std::complex<T> >& tsquared_out, 00102 const Mat< std::complex<T> >& in 00103 ); 00104 00105 00106 template<typename T1> 00107 inline static void 00108 apply(Mat<typename T1::elem_type>& out, const Op<T1,op_princomp>& in); 00109 00110 }; 00111 00112 00113