MATLAB: Identify Parameters within Noise Covariance Matrices with Separate Process and Measurement Noise Descriptions

covariancedescriptionsgreyestidentifymatricesmeasurementnoiseparametersprocessseparateSystem Identification Toolbox

If I am following the process of identifying State-Space Models with Separate Process and Measurement Noise Description outlined in the link below:
The matrices A and C are known, there is no input into the system so the B and D matrices are going to be all zeros, and the system output data is known. How do I solve for the partially known covariance matrices R1, R2, and R12 if I also have to make an initial guess for the parameterization vector, theta?

Best Answer

The answer depends on the number, location and values of the knowns and unknowns in the R1, R2, and R12 matrices.
1) You could calculate the Kalman gain, K, via 'n4sid' or 'ssest' given measurements, y, along with the matrices A, and C without an initial guess. From this value of K, you can solve the equations (4.87a) and (4.87b) in [1] if there are enough known elements in (R1, R2, R12) via an approach of your choice.
[1] Lennart Ljung, System Identification: Theory for the User, 2nd Edition, page 98
2) You could also try a number of random initial points.
3) You could ignore the constraint (partial knowledge of R1, R2, R12) and get a solution for K (via 'n4sid' or 'ssest'). Then elements in the choice of R2=I, R12=K, R1=KK' can be modified with what's known and used to start the nonlinear optimization in greyest().
4) You could use global optimization tools (such as the ones in the Global Optimization Toolbox) to remove/lessen dependency on the initial guess.