MATLAB: How to set a limit to the coefficient of the estimated transfer function in the System Identification app

coefficientfunctionguiidentificationlimitsystemSystem Identification Toolboxtransfer

How do I set a limit to the coefficient of the estimated transfer function in the System Identification app?
For example, can I set the coefficients to always >= 0? Is this possible through the GUI, or do I have to look at using grey-box methods?

Best Answer

The GUI for transfer function estimation does not support parameter constraints, but it's possible in command-line, without using grey-box modeling.
More details are at
For example, given the data
u = randn(200,1);
y = randn(200,1);
ts = 0.1;
z = iddata(y,u,ts);
% Generate an initial model, perhaps by unconstrained initialization, prior knowledge, or random system.
Gtf = tfest(z,2,0); % unconstrained initialization
Gtf.Structure.Numerator.Minimum = 0; % Constrain the numerator coefficient to be positive
Gtf.Structure.Numerator.Value = 1e-4; % Give a + numerator guess
Gtf = tfest(z,Gtf); % Refine the initial model estimate