49 m_tapering_factor = tapering_factor;
51 m_tapering_function.resize(m_order, m_order);
53 for (
int i=0; i<static_cast<int>(m_order); i++)
54 for (
int j=0; j<static_cast<int>(m_order); j++) {
56 if (xx<m_tapering_factor)
57 m_tapering_function(i, j) = pow(1-xx/m_tapering_factor, 4)*(4*xx/m_tapering_factor+1);
59 m_tapering_function(i, j) = 0;
71 m_hartlap_factor = hartlap_factor(m_order, nmeasures);
75 m_precision = m_matrix.inverse().cwiseProduct(m_tapering_function);
77 m_variance = m_matrix.diagonal();
79 m_std = m_variance.cwiseSqrt();
81 m_correlation = m_matrix.cwiseQuotient((m_std * m_std.transpose()));
90 m_order = covariance.
order();
91 m_set_tapering(tapering_factor);
The class CovarianceMatrix.
functions that wrap Eigen routines
The class TaperedCovarianceMatrix.
The class CovarianceMatrix.
size_t order() const
return the covariance matrix order
void m_set_tapering(const double tapering_factor)
privat member that sets the tapering matrix
void m_set(const std::vector< double > matrix, const double nmeasures=-1, const double prec=1.e-10)
set internal attributes
void set(const double tapering_factor, const CovarianceMatrix covariance)
Apply covariance tapering.
Eigen::MatrixXd SquareMatrixToEigen(const std::vector< double > mat)
convert a std::vector<double> to an Eigen::MatrixXd object
The global namespace of the CosmoBolognaLib
std::vector< T > flatten(std::vector< std::vector< T >> matrix)
flatten a matrix in a vector of size