Riccati solution using obsvf and dare

11 次查看(过去 30 天)
Joe Pearlman
Joe Pearlman 2016-7-25
回答: Kwin 2016-10-25
The Riccati solver dare from the Control toolbox was not solving (symplectic pencil error) for filtering when the system was not in observable form. I then used obsvf (which block-triangularizes the system matrix), followed by dare, but without deleting any of the non-observable states, so the system was still of the same dimension. dare then worked. Why? Note that non-observable states in this particular case had an A matrix of 0s.

回答(1 个)

Kwin
Kwin 2016-10-25
Are you sure you are trying to solve the right equation? Because DARE gives a solution for a LQR (linear quadratic regulator) defined as,
minimize: sum(x(t)'*Q*x(t)+u(t)'*R*u(t)) subjected to: x(t+1)=A*x(t)+B*u(t)
These are the same matrices for the dare command in MATLAB: [X,L,G] = dare(A,B,Q,R) Here G is the optimal gain matrix, u(t) = -G*x(t).
For this problem formulation you never need the matrix C (assuming the standard state space model notation, such that y(t)=C*x(t)+D*u(t)). When you do consider the C, is when you want to find the "optimal" observer, such that you can estimate the state x(t) from only y(t). This problem is very similar, and is the same as finding the LQR of the dual system: dare(A',C',Qd,Rd).
I expected that you just got lucky that dare did solve, but maybe the result might not have lead to a stable observer.

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by