1 #ifndef LINEARTRANSFORMKERNEL_H
2 #define LINEARTRANSFORMKERNEL_H
9 namespace Approximation
32 assert(Ain.cols() == Kin->coDim);
39 virtual void FillBlock(Eigen::Ref<const Eigen::VectorXd>
const& x1,
40 Eigen::Ref<const Eigen::VectorXd>
const& x2,
41 Eigen::Ref<const Eigen::VectorXd>
const& params,
42 Eigen::Ref<Eigen::MatrixXd> block)
const override
44 Eigen::MatrixXd temp(
K->coDim,
K->coDim);
45 K->FillBlock(x1,x2, params, temp);
46 block =
A*temp*
A.transpose();
50 Eigen::Ref<const Eigen::VectorXd>
const& x2,
51 Eigen::Ref<const Eigen::VectorXd>
const& params,
52 std::vector<int>
const& wrts,
53 Eigen::Ref<Eigen::MatrixXd> block)
const override
55 Eigen::MatrixXd temp(
K->coDim,
K->coDim);
56 K->FillPosDerivBlock(x1,x2, params, wrts, temp);
57 block =
A*temp*
A.transpose();
60 virtual std::shared_ptr<KernelBase>
Clone()
const override{
return std::make_shared<LinearTransformKernel>(
A,
K);};
64 std::shared_ptr<KernelBase>
K;
69 template<
typename KernelType>
75 template<
typename KernelType,
Base class for all covariance kernels.
const unsigned int inputDim
const unsigned int numParams
Eigen::VectorXd cachedParams
LinearTransformMean< MeanType > operator*(Eigen::MatrixXd const &A, MeanType const &K)
LinearTransformKernel TransformKernel(Eigen::MatrixXd const &A, KernelType const &K)