66 const Eigen::MatrixBase<DerivedG>& G,
67 const Eigen::MatrixBase<DerivedW>& W,
77 Eigen::MatrixX<typename DerivedF::Scalar> A = Eigen::MatrixX<typename DerivedF::Scalar>::Zero(2 * F.rows(), 2 * F.cols());
78 A.topLeftCorner(F.rows(), F.cols()) = -F;
79 A.topRightCorner(F.rows(), F.cols()) = G * W * G.transpose();
80 A.bottomRightCorner(F.rows(), F.cols()) = F.transpose();
81 A *=
typename DerivedF::Scalar(dt);
84 Eigen::Matrix<typename DerivedF::Scalar, Eigen::Dynamic, Eigen::Dynamic> B = A.exp();
91 typename DerivedF::PlainObject Phi = B.bottomRightCorner(F.rows(), F.cols()).transpose();
92 typename DerivedF::PlainObject Q = Phi * B.topRightCorner(F.rows(), F.cols());
110 const Eigen::MatrixBase<DerivedG>& G,
111 const Eigen::MatrixBase<DerivedW>& W,
122 Eigen::MatrixX<typename DerivedF::Scalar> A = Eigen::MatrixX<typename DerivedF::Scalar>::Zero(2 * F.rows(), 2 * F.cols());
123 A.topLeftCorner(F.rows(), F.cols()) = -F;
124 A.topRightCorner(F.rows(), F.cols()) = G * W * G.transpose();
125 A.bottomRightCorner(F.rows(), F.cols()) = F.transpose();
126 A *=
typename DerivedF::Scalar(dt);
129 Eigen::Matrix<typename DerivedF::Scalar, Eigen::Dynamic, Eigen::Dynamic> B =
math::expm(A, expmOrder);
136 typename DerivedF::PlainObject Phi = B.bottomRightCorner(F.rows(), F.cols()).transpose();
137 typename DerivedF::PlainObject Q = Phi * B.topRightCorner(F.rows(), F.cols());
std::pair< typename DerivedF::PlainObject, typename DerivedF::PlainObject > calcPhiAndQWithVanLoanMethod(const Eigen::MatrixBase< DerivedF > &F, const Eigen::MatrixBase< DerivedG > &G, const Eigen::MatrixBase< DerivedW > &W, double dt)
Numerical Method to calculate the State transition matrix 𝚽 and System/Process noise covariance matri...