# Estimating the input to a system from a system state

I have a system for which I have obtained a non-linear time-varying state-space representation. For this system I am able to measure one of the states. I would like to estimate the input from this.

In my parameter estimation notes I have found a scribbled aside "[the extended Kalman Filter] can be used to estimate the system input if the output is known". So far I've not found any references or sections in my notes that describe the use of the EKF in this way. Can anyone suggest a reference (or provide) an explanation of how to perform this task?

The system is: $$x(t)= \begin{bmatrix} x_1(t)\\ x_2(t) \end{bmatrix}; \quad \dot{x}(t)= \begin{bmatrix} x_2(t) \\ \alpha(t) x^2_2(t) + \beta(t) + \gamma(t) u_1(t) \end{bmatrix}; \quad y=x_2(t)$$ Where: $\alpha(t)$ and $\gamma(t)$ are constant parameters; $\beta(t)$ is a time-varying parameter; $y=x_2(t)$ is a known (measured) time-varying state; and $u(t)$ is the unknown system input. I have made a simplifying assumption that $\beta(t)$ is constant initially. After proving against this simplified system I want to move to a system where: $$x(t)= \begin{bmatrix} x_1(t)\\ x_2(t) \end{bmatrix}; \quad u(t)= \begin{bmatrix} u_1(t)\\ u_2(t) \end{bmatrix}; \quad y=x_2(t)\\ \quad \dot{x}(t)= \begin{bmatrix} x_2(t) \\ \alpha(t) x^2_2(t) + \beta(t) + \gamma(t) u_1(t) \end{bmatrix}; \quad \beta(t) = f(u_2(t))$$ Where: $u_1(t)$ is the unknown system input ($u(t)$ in part 1); $u_2(t)$ and $f(u_2(t))$ are a known input and a known function. If someone can point me at a reference for the first part (constant $\beta(t)$) or give a brief explanation of how to approach this then I hope to be able to work to a solution for the second part.

-
Perhaps I need to rephrase my question slightly? – IainCunningham Aug 7 '12 at 11:58

One possible method to estimate unknonwn inputs to a system with the EKF, is to add those inputs as additional states to the systems, i.e. to go from $$\dot x(t) = F(x, u)$$ to $$\left[\begin{array} \dot x (t) \\ \dot u \end{array}\right] = \left[\begin{array}{c} F(x,u) \\ 0 \end{array}\right]$$

and consider it an autonomous systems. Please note that this approach gives you estimates of the inputs that, in the case that the EKF converges properly, converge only to constants. This can work in practice if the input you try to estimate is slower that the rest of the dynamics. If that is not the case, you can "expand" your unknown input to a chain of integrators: in this case the filter, if converges properly, would converge exactly to inputs that are a polynomial function of time of degree $n$, where $n$ is the number of integrators in the chain (that is, with one integrator you can guess a linear evolution, with two a parabolic evolution, and so on...).

-