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
5 Source Code
NoteImplementation
File: inst/include/hdf5Algebra/matrixNormalization.hpp • Lines 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(...);