MUQ  0.4.3
ConcatenateKernel.h
Go to the documentation of this file.
1 #ifndef CONCATENATEKERNEL_H
2 #define CONCATENATEKERNEL_H
3 
5 
6 
7 namespace muq
8 {
9 namespace Approximation
10 {
11 
22  {
23 
24  public:
25 
26  ConcatenateKernel(std::shared_ptr<KernelBase> const& kernel1In,
27  std::shared_ptr<KernelBase> const& kernel2In) : ConcatenateKernel(std::vector<std::shared_ptr<KernelBase>>({kernel1In, kernel2In})){};
28 
29  ConcatenateKernel(std::vector<std::shared_ptr<KernelBase>> const& kernelsIn);
30 
31  virtual ~ConcatenateKernel() = default;
32 
33  virtual std::shared_ptr<KernelBase> Clone() const override{return std::make_shared<ConcatenateKernel>(kernels);};
34 
35  virtual void FillBlock(Eigen::Ref<const Eigen::VectorXd> const& x1,
36  Eigen::Ref<const Eigen::VectorXd> const& x2,
37  Eigen::Ref<const Eigen::VectorXd> const& params,
38  Eigen::Ref<Eigen::MatrixXd> block) const override;
39 
40  virtual void FillPosDerivBlock(Eigen::Ref<const Eigen::VectorXd> const& x1,
41  Eigen::Ref<const Eigen::VectorXd> const& x2,
42  Eigen::Ref<const Eigen::VectorXd> const& params,
43  std::vector<int> const& wrts,
44  Eigen::Ref<Eigen::MatrixXd> block) const override;
45 
46  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;
47 
48  private:
49 
50  static unsigned int CountCoDims(std::vector<std::shared_ptr<KernelBase>> kernels);
51  static unsigned int CountParams(std::vector<std::shared_ptr<KernelBase>> kernels);
52 
53  std::vector<std::shared_ptr<KernelBase>> kernels;
54  };
55 
56 
57 
58 template<typename KernelType1, typename KernelType2>
59 ConcatenateKernel Concatenate(KernelType1 const& kernel1, KernelType2 const& kernel2)
60 {
61  return ConcatenateKernel(kernel1.Clone(), kernel2.Clone());
62 }
63 
64 
65 
66 
67 } // namespace Approximation
68 } // namespace muq
69 
70 
71 #endif
std::vector< std::shared_ptr< KernelBase > > kernels
static unsigned int CountParams(std::vector< std::shared_ptr< KernelBase >> kernels)
ConcatenateKernel(std::shared_ptr< KernelBase > const &kernel1In, std::shared_ptr< KernelBase > const &kernel2In)
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.
virtual std::shared_ptr< KernelBase > Clone() const override
virtual void FillBlock(Eigen::Ref< const Eigen::VectorXd > const &x1, Eigen::Ref< const Eigen::VectorXd > const &x2, Eigen::Ref< const Eigen::VectorXd > const &params, Eigen::Ref< Eigen::MatrixXd > block) const override
virtual void FillPosDerivBlock(Eigen::Ref< const Eigen::VectorXd > const &x1, Eigen::Ref< const Eigen::VectorXd > const &x2, Eigen::Ref< const Eigen::VectorXd > const &params, std::vector< int > const &wrts, Eigen::Ref< Eigen::MatrixXd > block) const override
static unsigned int CountCoDims(std::vector< std::shared_ptr< KernelBase >> kernels)
Base class for all covariance kernels.
Definition: KernelBase.h:36
ConcatenateKernel Concatenate(KernelType1 const &kernel1, KernelType2 const &kernel2)