How can i avoid Hammerstein-Wiener system identification (nlhw) changes my linear model parameters?

1 view (last 30 days)
Hello I am using Hammerstein-Wiener system identification for my nonlinear system. somehow i know my linear model already and don't want any change in that. However when i am using "nlhw" function it makes some changes in linear model parameter as well. How can i use "nlwh" function in that way? I have already removed identification freedom for all parameters and put min max for them. Apparently those options does not apply for "idnlwh" function. does anybody have any idea how can i tackle this issue? thanks, Yousef

Answers (1)

Sebastian Kammer
Sebastian Kammer on 22 May 2017
Hi Yousef,
It might not be possible to turn off the estimation of the Linear Model for your Hammerstein-Wiener object.
However as a workaround, you could try multiple iterations of the "nlhw" function while keeping the Linear Model of your "idnlhw" model constant. This way you could keep using the same Linear Model and just refine the input and output nonlinearity estimators. In order to do this, you could create a new "idnlhw" using the following syntax:
sys = idnlhw(LinModel,InputNL,OutputNL)
Here, you would provide your own Linear Model as the "LinModel" input, and then provide the "InputNonlinearity" and "OutputNonlinearity" properties of your old "idnlhw" object as the "InputNL" and "OutputNL" inputs, respectively.
For instance, consider the following example .
load throttledata.mat
Tr = getTrend(ThrottleData);
Tr.OutputOffset = 15;
DetrendedData = detrend(ThrottleData, Tr);
opt = oeOptions('Focus','simulation');
LinearModel = oe(DetrendedData,[1 2 1],opt);
sys = nlhw(ThrottleData,LinearModel,[],'saturation'); % first iteration
% create new "idnlhw" object for second iteration
newSys = idnlhw(LinearModel, sys.InputNonlinearity, sys.OutputNonlinearity);
This way you could refine the input and output nonlinearity estimators only, while using the same linear model. Note that the "nlhw" function will still try to estimate the linear model, but you can just discard it and keep using your own linear model.
I hope this helps.
Sebastian

Community Treasure Hunt

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

Start Hunting!