MUQ  0.4.3
ConstantKernel.h
Go to the documentation of this file.
1 #ifndef CONSTANTKERNEL_H
2 #define CONSTANTKERNEL_H
3 
5 
6 
7 namespace muq
8 {
9 namespace Approximation
10 {
11 
24 class ConstantKernel : public KernelImpl<ConstantKernel>
25 {
26 
27 public:
28 
29  ConstantKernel(unsigned dim,
30  const double sigma2In,
31  const Eigen::Vector2d sigmaBounds = {0.0, std::numeric_limits<double>::infinity()});
32 
33  ConstantKernel(unsigned dim,
34  std::vector<unsigned> dimInds,
35  const double sigma2In,
36  const Eigen::Vector2d sigmaBounds = {0.0, std::numeric_limits<double>::infinity()});
37 
38  ConstantKernel(unsigned dim,
39  Eigen::MatrixXd const& sigma2In,
40  const Eigen::Vector2d sigmaBounds = {0.0, std::numeric_limits<double>::infinity()});
41 
42  ConstantKernel(unsigned dim,
43  std::vector<unsigned> dimInds,
44  Eigen::MatrixXd const& sigma2In,
45  const Eigen::Vector2d sigmaBounds = {0.0, std::numeric_limits<double>::infinity()});
46 
47  virtual ~ConstantKernel() = default;
48 
49  template<typename ScalarType1, typename ScalarType2, typename ScalarType3>
50  void FillBlockImpl(Eigen::Ref<const Eigen::Matrix<ScalarType1, Eigen::Dynamic, 1>> const& x1,
51  Eigen::Ref<const Eigen::Matrix<ScalarType1, Eigen::Dynamic, 1>> const& x2,
52  Eigen::Ref<const Eigen::Matrix<ScalarType2, Eigen::Dynamic, 1>> const& params,
53  Eigen::Ref<Eigen::Matrix<ScalarType3,Eigen::Dynamic, Eigen::Dynamic>> block) const
54  {
55  int ind = 0;
56  for(int i=0; i<coDim; ++i){
57  for(int j=0; j<=i; ++j){
58  block(i,j) = params(ind);
59  block(j,i) = block(i,j);
60  ind++;
61  }
62  }
63  }
64 
65 
66  virtual std::tuple<std::shared_ptr<muq::Modeling::LinearSDE>, std::shared_ptr<muq::Modeling::LinearOperator>, Eigen::MatrixXd> GetStateSpace(boost::property_tree::ptree sdeOptions=boost::property_tree::ptree()) const override;
67 
68 private:
69 
70  static unsigned GetNumParams(Eigen::MatrixXd const& cov)
71  {
72  return 0.5*cov.rows()*(cov.rows()+1);
73  }
74 };
75 
76 }
77 }
78 
79 
80 #endif
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 &params, Eigen::Ref< Eigen::Matrix< ScalarType3, Eigen::Dynamic, Eigen::Dynamic >> block) const
virtual std::tuple< std::shared_ptr< muq::Modeling::LinearSDE >, std::shared_ptr< muq::Modeling::LinearOperator >, Eigen::MatrixXd > GetStateSpace(boost::property_tree::ptree sdeOptions=boost::property_tree::ptree()) const override
Returns a state space representation of the covariance kernel.
ConstantKernel(unsigned dim, const double sigma2In, const Eigen::Vector2d sigmaBounds={0.0, std::numeric_limits< double >::infinity()})
static unsigned GetNumParams(Eigen::MatrixXd const &cov)
const unsigned int coDim
Definition: KernelBase.h:133
const std::vector< unsigned int > dimInds
Definition: KernelBase.h:126
Base class in CRTP pattern for covariance kernels.
Definition: KernelImpl.h:26