11 std::shared_ptr<KernelBase> kernel2In) :
KernelBase(kernel1In->inputDim,
13 kernel1In->numParams + kernel2In->numParams),
26 Eigen::Ref<const Eigen::VectorXd>
const& x2,
27 Eigen::Ref<const Eigen::VectorXd>
const& params,
28 Eigen::Ref<Eigen::MatrixXd> block)
const
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
46 kernel1->FillPosDerivBlock(x1,x2, params.head(
kernel1->numParams), wrts, block);
49 kernel2->FillPosDerivBlock(x1,x2, params.tail(
kernel2->numParams), wrts, temp);
54 std::tuple<std::shared_ptr<muq::Modeling::LinearSDE>, std::shared_ptr<muq::Modeling::LinearOperator>, Eigen::MatrixXd>
SumKernel::GetStateSpace(boost::property_tree::ptree sdeOptions)
const
56 std::vector<std::shared_ptr<muq::Modeling::LinearSDE>> sdes(2);
57 std::vector<std::shared_ptr<muq::Modeling::LinearOperator>> linOps(2);
58 Eigen::MatrixXd pinf1, pinf2;
61 std::tie(sdes.at(0), linOps.at(0), pinf1) =
kernel1->GetStateSpace(sdeOptions);
62 std::tie(sdes.at(1), linOps.at(1), pinf2) =
kernel2->GetStateSpace(sdeOptions);
68 auto newObsOp = std::make_shared<muq::Modeling::BlockRowOperator>(linOps);
71 Eigen::MatrixXd newPinf = Eigen::MatrixXd::Zero(pinf1.rows() + pinf2.rows(), pinf1.cols() + pinf2.cols());
72 newPinf.block(0,0,pinf1.rows(),pinf1.cols()) = pinf1;
73 newPinf.block(pinf1.rows(),pinf1.cols(), pinf2.rows(), pinf2.cols()) = pinf2;
75 return std::make_tuple(newSDE, newObsOp, newPinf);
82 return std::make_shared<SumKernel>(k1, k2);
Base class for all covariance kernels.
const unsigned int numParams
Eigen::VectorXd cachedParams
std::shared_ptr< KernelBase > kernel1
std::shared_ptr< KernelBase > kernel2
virtual void FillPosDerivBlock(Eigen::Ref< const Eigen::VectorXd > const &x1, Eigen::Ref< const Eigen::VectorXd > const &x2, Eigen::Ref< const Eigen::VectorXd > const ¶ms, std::vector< int > const &wrts, Eigen::Ref< Eigen::MatrixXd > block) 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 ¶ms, Eigen::Ref< Eigen::MatrixXd > block) const override
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.
SumKernel(std::shared_ptr< KernelBase > kernel1In, std::shared_ptr< KernelBase > kernel2In)
static std::shared_ptr< LinearSDE > Concatenate(std::vector< std::shared_ptr< LinearSDE >> const &sdes, boost::property_tree::ptree options=boost::property_tree::ptree())
Combines the states of multiple SDEs into a single monolitch SDE.
SumMean operator+(MeanType1 const &mu1, MeanType2 const &mu2)