MATLAB Answers

Can nlgreyest() estimate open-loop unstable models?

12 views (last 30 days)
Gergely Takács
Gergely Takács on 7 Dec 2018
Edited: Gergely Takács on 3 Sep 2020
I am attempting to create a nonlinear grey-box model based on an open-loop unstable model, for which data was gathered in a closed-loop experiment with a superimposed random probe signal. I have tried different settings, solvers, etc. I am getting error messages such as:
Objective function is undefined at initial point. Fmincon cannot continue.
for fmincon or
The initial computation of the loss function failed. The initial model, if
specified, may be unstable. Consider setting the "EnforceStability" option to
TRUE. Also make sure that the parameter bounds do not make the model unstable.
or alternatively, the process just terminates after 0 iterations because of an infinite cost.
  • Is it even possible to identify unstable models using nlgreyest()? Or the model cannot be compared to measurement data because of instability?

  2 Comments

Enea Paracampo
Enea Paracampo on 29 Jun 2020
I have the same problem but with greyest. Have you solved it?
Gergely Takács
Gergely Takács on 3 Sep 2020
Not yet. However, greyest should be usable with unstable models - as far as I know.

Sign in to comment.

Answers (1)

Rajiv Singh
Rajiv Singh on 9 Jul 2020
With greyest, either parameterize K matrix using the ODE function, or choose to esitmate it separately by using the "DisturbanceModel"/'estimate' option (in greyestOptions). Then follow the tips described in the answer:
For nlgreyest, you are out of luck since it handles only time-domain data and does not allow incorporation of a noise model.

  1 Comment

Gergely Takács
Gergely Takács on 3 Sep 2020
Thank you for your response Rajiv.
I had to return to this question after some time. Based on the link you provided, if I understand it correctly, time-domain identification of unstable models is generally hard and to be avoided. I guess, this is especially the case for nonlinear unstable models. Since nlgreyest only uses time-domain data, essentially the simple answer is that it cannot be used for unstable models. Is my understanding correct?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by