9 namespace Approximation
24 class ConstantKernel :
public KernelImpl<ConstantKernel>
30 const double sigma2In,
31 const Eigen::Vector2d sigmaBounds = {0.0, std::numeric_limits<double>::infinity()}) :
ConstantKernel(dim, sigma2In*Eigen::MatrixXd::Ones(1,1), sigmaBounds){};
35 const double sigma2In,
36 const Eigen::Vector2d sigmaBounds = {0.0, std::numeric_limits<double>::infinity()}) :
ConstantKernel(dim,
dimInds, sigma2In*Eigen::MatrixXd::Ones(1,1), sigmaBounds){};
40 Eigen::MatrixXd
const& sigma2In,
49 for(
int i=0; i<sigma2In.rows(); ++i){
50 for(
int j=0; j<=i; ++j){
59 Eigen::MatrixXd
const& sigma2In,
68 for(
int i=0; i<sigma2In.rows(); ++i){
69 for(
int j=0; j<=i; ++j){
78 template<
typename ScalarType1,
typename ScalarType2,
typename ScalarType3>
79 void FillBlockImpl(Eigen::Ref<
const Eigen::Matrix<ScalarType1, Eigen::Dynamic, 1>>
const& x1,
80 Eigen::Ref<
const Eigen::Matrix<ScalarType1, Eigen::Dynamic, 1>>
const& x2,
81 Eigen::Ref<
const Eigen::Matrix<ScalarType2, Eigen::Dynamic, 1>>
const& params,
82 Eigen::Ref<Eigen::Matrix<ScalarType3,Eigen::Dynamic, Eigen::Dynamic>> block)
const
85 for(
int i=0; i<
coDim; ++i){
86 for(
int j=0; j<=i; ++j){
87 block(i,j) = params(ind) + params(ind+1);
88 block(j,i) = block(i,j);
98 return 0.5*cov.rows()*(cov.rows()+1);
ConstantKernel(unsigned dim, const double sigma2In, const Eigen::Vector2d sigmaBounds={0.0, std::numeric_limits< double >::infinity()})
ConstantKernel(unsigned dim, Eigen::MatrixXd const &sigma2In, const Eigen::Vector2d sigmaBounds={0.0, std::numeric_limits< double >::infinity()})
void FillBlockImpl(Eigen::Ref< const Eigen::Matrix< ScalarType1, Eigen::Dynamic, 1 >> const &x1, Eigen::Ref< const Eigen::Matrix< ScalarType1, Eigen::Dynamic, 1 >> const &x2, Eigen::Ref< const Eigen::Matrix< ScalarType2, Eigen::Dynamic, 1 >> const ¶ms, Eigen::Ref< Eigen::Matrix< ScalarType3, Eigen::Dynamic, Eigen::Dynamic >> block) const
ConstantKernel(unsigned dim, std::vector< unsigned > dimInds, Eigen::MatrixXd const &sigma2In, const Eigen::Vector2d sigmaBounds={0.0, std::numeric_limits< double >::infinity()})
ConstantKernel(unsigned dim, const double sigma2In, const Eigen::Vector2d sigmaBounds={0.0, std::numeric_limits< double >::infinity()})
ConstantKernel(unsigned dim, std::vector< unsigned > dimInds, const double sigma2In, const Eigen::Vector2d sigmaBounds={0.0, std::numeric_limits< double >::infinity()})
static unsigned GetNumParams(Eigen::MatrixXd const &cov)
virtual ~ConstantKernel()
const unsigned int numParams
Eigen::VectorXd cachedParams
const std::vector< unsigned int > dimInds
Eigen::MatrixXd paramBounds