MATLAB: How to use arbitrary relationships of nominator/denominator while trying to estimating a transfer function? (idtf and tfest)

System Identification Toolbox

How to use arbitrary relationships of nominator/denominator while trying to estimating a transfer function? (idtf)
I would like to provide relationships like the following:
init_sys.Structure.Numerator(1) = init_sys.Structure.Denominator(1)
init_sys.Structure.Numerator(2) = init_sys.Structure.Denominator(2)* init_sys.Structure.Denominator(3)

Best Answer

As you can see in the documentation of 'tfest' only the following is possible by directly declaring this as an input to the function:
init_sys
Linear system that configures the initial parameterization of sys.
You obtain init_sys by either performing an estimation using measured data or by direct construction.
If init_sys is an idtf model, tfest uses the parameters and constraints defined in init_sys as the initial guess for estimating sys. Use the Structure property of init_sys to configure initial guesses and constraints for the numerator, denominator, and transport lag. For example:
  • To specify an initial guess for the numerator of init_sys, set init_sys.Structure.Numerator.Value to the initial guess.
  • To specify constraints for the numerator of init_sys:
  • Set init_sys.Structure.Numerator.Minimum to the minimum numerator coefficient values
  • Set init_sys.Structure.Numerator.Maximum to the maximum numerator coefficient values
  • Set init_sys.Structure.Numerator.Free to indicate which numerator coefficients are free for estimation
If init_sys is not an idtf model, the software first converts init_sys to a transfer function. tfest uses the parameters of the resulting model as the initial guess for estimation.
If opt is not specified, and init_sys was obtained by estimation, then the estimation options from init_sys.Report.OptionsUsed are used.
So are there any other ways to implement this?
This is not possible directly. We only allow bounds on parameters, not arbitrary relationships. For that, you will need to use grey box models. Basically you need to write a function that converts your desired free parameters into state-space matrices.
See these examples: