Syntax [kest,L,P] = kalman(sys,Qn,Rn,Nn) [kest,L,P] = kalman(sys,Qn,Rn,Nn,sensors,known) [kest,L,P,M,Z] = kalman(sys,Qn,Rn,...,type) Description kalman designs a Kalman filter or Kalman state estimator given a state-space model of the plant and the process and measurement noise covariance data. The Kalman estimator provides the optimal solution to the following continuous or discrete estimation problems. Continuous-Time Estimation Given the continuous plant with known inputs u, white process noise w, and white measurement noise v satisfying construct a state estimate that minimizes the steady-state error covariance The optimal solution is the Kalman filter with equations The filter gain L is determined by solving an algebraic Riccati equation to be where and P solves the corresponding algebraic Riccati equation. The estimator uses the known inputs u and the measurements y to generate the output and state estimates . Note that estimates the true plant output Discrete-Time Estimation Given the discrete plant and the noise covariance data The estimator has the following state equation: The gain matrix L is derived by solving a discrete Riccati equation to be and where There are two variants of discrete-time Kalman estimators: The current estimator generates output estimates measurements up to and state estimates using all available . This estimator has the output equation where the innovation gain M is defined as M updates the prediction using the new measurement The delayed estimator generates output estimates . and state estimates using measurements only up to yv[n-1]. This estimator is easier to implement inside control loops and has the output equation [kest,L,P] = kalman(sys,Qn,Rn,Nn) creates a state-space model kest of the Kalman estimator given the plant model sys and the noise covariance data Qn, Rn, Nn (matrices Q, R, N described in Description). sys must be a state-space model with matrices The resulting estimator kest has inputs and outputs . (or their discrete-time counterparts). You can omit the last input argument Nn when N = 0. The function kalman handles both continuous and discrete problems and produces a continuous estimator when sys is continuous and a discrete estimator otherwise. In continuous time, kalman also returns the Kalman gain L and the steady-state error covariance matrix P. P solves the associated Riccati equation. [kest,L,P] = kalman(sys,Qn,Rn,Nn,sensors,known) handles the more general situation when Not all outputs of sys are measured. The disturbance inputs w are not the last inputs of sys. The index vectors sensors and known specify which outputs y of sys are measured and which inputs u are known (deterministic). All other inputs or sys are assumed stochastic. [kest,L,P,M,Z] = kalman(sys,Qn,Rn,...,type) specifies the estimator type for discrete-time plants sys. The string type is either 'current' (default) or 'delayed'. For discrete-time plants, kalman returns the estimator and innovation gains L and M and the steady-state error covariances Examples See LQG Design for the x-Axis and Kalman Filtering for examples that use the kalman function. Limitations The plant and noise data must satisfy: (C,A) detectable and has no uncontrollable mode on the imaginary axis (or unit circle in discrete time) with the notation References [1] Franklin, G.F., J.D. Powell, and M.L. Workman, Digital Control of Dynamic Systems, Second Edition, AddisonWesley, 1990. [2] Lewis, F., Optimal Estimation, John Wiley & Sons, Inc, 1986.