MUQ  0.4.3
KroneckerProductOperator.h
Go to the documentation of this file.
1 #ifndef KRONECKERPRODUCTOPERATOR_H
2 #define KRONECKERPRODUCTOPERATOR_H
3 
6 
7 namespace muq
8 {
9 namespace Modeling
10 {
11 
21  {
22 
23  public:
24  KroneckerProductOperator(std::shared_ptr<LinearOperator> Ain,
25  std::shared_ptr<LinearOperator> Bin);
26 
27 
29  virtual Eigen::MatrixXd Apply(Eigen::Ref<const Eigen::MatrixXd> const& x) override;
30 
32  virtual Eigen::MatrixXd ApplyTranspose(Eigen::Ref<const Eigen::MatrixXd> const& x) override;
33 
34  private:
35  std::shared_ptr<LinearOperator> A;
36  std::shared_ptr<LinearOperator> B;
37 
38  }; // class KroneckerProductOperator
39 
40 
41 
48  std::shared_ptr<LinearOperator> KroneckerSum(std::shared_ptr<LinearOperator> A,
49  std::shared_ptr<LinearOperator> B);
50 
51  Eigen::MatrixXd KroneckerProduct(Eigen::Ref<const Eigen::MatrixXd> const& A,
52  Eigen::Ref<const Eigen::MatrixXd> const& B);
53 
54 } // namespace Modeling
55 } // namespace muq
56 
57 
58 #endif // #ifndef KRONECKERPRODUCTOPERATOR_H
Defines the Kronecker product of two other linear operators.
KroneckerProductOperator(std::shared_ptr< LinearOperator > Ain, std::shared_ptr< LinearOperator > Bin)
virtual Eigen::MatrixXd Apply(Eigen::Ref< const Eigen::MatrixXd > const &x) override
Generic linear operator base class.
virtual Eigen::MatrixXd ApplyTranspose(Eigen::Ref< const Eigen::MatrixXd > const &x)=0
Eigen::MatrixXd KroneckerProduct(Eigen::Ref< const Eigen::MatrixXd > const &A, Eigen::Ref< const Eigen::MatrixXd > const &B)
std::shared_ptr< LinearOperator > KroneckerSum(std::shared_ptr< LinearOperator > A, std::shared_ptr< LinearOperator > B)