56std::pair<bool, int> 
pca(
 
   57    const InputEigenMatrix_& matrix,
 
   61    OutputEigenMatrix_& scores,
 
   62    OutputEigenMatrix_& rotation,
 
   63    EigenVector_& variances,
 
   66    const Eigen::Index nr = matrix.rows();
 
   67    const Eigen::Index nc = matrix.cols();
 
   72            throw std::runtime_error(
"cannot center with no observations");    
 
   80            throw std::runtime_error(
"cannot scale with fewer than two observations");    
 
   85    if (center || scale) {
 
   87        for (Eigen::Index i = 0; i < nc; ++i) {
 
   88            buffer = matrix.col(i);
 
   90            typename EigenVector_::Scalar mean = 0;
 
   92                mean = buffer.sum() / nr;
 
   97                typename EigenVector_::Scalar var = 0;
 
   98                for (
const auto x : buffer) {
 
   99                    var += (x - mean) * (x - mean);
 
  103                    scale0[i] = std::sqrt(var/(nr - 1));
 
  113    std::unique_ptr<Matrix<EigenVector_, OutputEigenMatrix_> > ptr;
 
  114    ptr.reset(
new SimpleMatrix<EigenVector_, OutputEigenMatrix_, I<
decltype(&matrix)> >(&matrix));
 
  117        std::unique_ptr<Matrix<EigenVector_, OutputEigenMatrix_> > alt;
 
  118        alt.reset(
new CenteredMatrix<EigenVector_, OutputEigenMatrix_, I<
decltype(ptr)>, I<
decltype(¢er0)> >(std::move(ptr), ¢er0));
 
  123        std::unique_ptr<Matrix<EigenVector_, OutputEigenMatrix_> > alt;
 
  124        alt.reset(
new ScaledMatrix<EigenVector_, OutputEigenMatrix_, I<
decltype(ptr)>, I<
decltype(&scale0)> >(std::move(ptr), &scale0, 
true, 
true));
 
  128    const auto stats = 
compute(*ptr, number, scores, rotation, variances, options);
 
  130        const auto denom = nc - 1;
 
  131        for (
auto& v : variances) {
 
 
  195template<
class OutputEigenMatrix_ = Eigen::MatrixXd, 
class EigenVector_ = Eigen::VectorXd, 
class InputEigenMatrix_>
 
std::pair< bool, int > compute(const Matrix_ &matrix, const Eigen::Index number, EigenMatrix_ &outU, EigenMatrix_ &outV, EigenVector_ &outD, const Options &options)
Definition compute.hpp:142
 
std::pair< bool, int > pca(const InputEigenMatrix_ &matrix, bool center, bool scale, Eigen::Index number, OutputEigenMatrix_ &scores, OutputEigenMatrix_ &rotation, EigenVector_ &variances, const Options &options)
Definition pca.hpp:56