RcppNormalizeColwise

C++ Function Reference

1 Signature

Eigen::MatrixXd BigDataStatMeth::RcppNormalizeColwise(M X, bool bc, bool bs)

2 Parameters

  • X (M)
  • bc (bool)
  • bs (bool)

3 Returns

Type: typename M

4 Caller Graph

Function dependencies

5 Source Code

File: inst/include/hdf5Algebra/matrixNormalization.hppLines 140-169

inline Eigen::MatrixXd RcppNormalizeColwise ( M  X, bool bc, bool bs )
    {
        
        static_assert(std::is_same<M, Eigen::MatrixXd >::value || 
                      std::is_same<M, Eigen::Map< Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>> >::value || 
                      std::is_same<M, Eigen::Map< Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor>> >::value,
                      "Error - type not allowed");
        
        Eigen::MatrixXd rX = X;
        
        if( bc==true && bs==true )  {
            
            Eigen::RowVectorXd mean = X.colwise().mean();
            Eigen::RowVectorXd std = ((X.rowwise() - mean).array().square().colwise().sum() / (X.rows() - 1)).sqrt();
            rX = (X.rowwise() - mean).array().rowwise() / std.array();
            
        }   else if (bc == true  && bs==false)   {
            
            Eigen::RowVectorXd mean = X.colwise().mean();
            rX = (X.rowwise() - mean);
            
        }  else if ( bc == false && bs == true)   {
            
            Eigen::RowVectorXd mean = X.colwise().mean();
            Eigen::RowVectorXd std = (X.array().square().colwise().sum() / (X.rows() - 1)).sqrt();
            rX = X.array().rowwise() / std.array();
        }
        
        return(rX);
    }

6 Usage Example

#include "BigDataStatMeth.hpp"

// Example usage
auto result = RcppNormalizeColwise(...);