MUQ  0.4.3
WhiteNoiseKernel.h
Go to the documentation of this file.
1 #ifndef WHITENOISEKERNEL_H
2 #define WHITENOISEKERNEL_H
3 
5 
6 
7 namespace muq
8 {
9 namespace Approximation
10 {
11 
24 class WhiteNoiseKernel : public KernelImpl<WhiteNoiseKernel>
25 {
26 
27 public:
28 
29  WhiteNoiseKernel(unsigned dim,
30  const double sigma2In) : WhiteNoiseKernel(dim, sigma2In, {0.0, std::numeric_limits<double>::infinity()}){}
31 
32  WhiteNoiseKernel(unsigned dim,
33  const double sigma2In,
34  const Eigen::Vector2d sigmaBounds) : KernelImpl<WhiteNoiseKernel>(dim, 1, 1)
35  {
36  paramBounds.resize(2,1);
37  paramBounds(0) = sigmaBounds[0]; // lower bound on sigma2
38  paramBounds(1) = sigmaBounds[1]; // upper bound on sigma2
39 
40  cachedParams.resize(1);
41  cachedParams(0) = sigma2In;
42  };
43 
44  virtual ~WhiteNoiseKernel(){};
45 
46  template<typename ScalarType1, typename ScalarType2, typename ScalarType3>
47  void FillBlockImpl(Eigen::Ref<const Eigen::Matrix<ScalarType1, Eigen::Dynamic, 1>> const& x1,
48  Eigen::Ref<const Eigen::Matrix<ScalarType1, Eigen::Dynamic, 1>> const& x2,
49  Eigen::Ref<const Eigen::Matrix<ScalarType2, Eigen::Dynamic, 1>> const& params,
50  Eigen::Ref<Eigen::Matrix<ScalarType3,Eigen::Dynamic, Eigen::Dynamic>> block) const
51  {
52  ScalarType1 squaredDist = (x1-x2).squaredNorm();
53  block(0,0) = (squaredDist<1e-14) ? params(0) : 0.0;
54  }
55 };
56 
57 
58 }
59 }
60 
61 #endif
Eigen::VectorXd cachedParams
Definition: KernelBase.h:156
Base class in CRTP pattern for covariance kernels.
Definition: KernelImpl.h:26
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
WhiteNoiseKernel(unsigned dim, const double sigma2In, const Eigen::Vector2d sigmaBounds)
WhiteNoiseKernel(unsigned dim, const double sigma2In)