Estimate process model using time or frequency data


sys = procest(data,type)
sys = procest(data,type,Name,Value)
sys = procest(data,init_sys)
sys = procest(data,___,opt)


sys = procest(data,type) estimates a process model, sys, using time or frequency domain data, data. type defines the structure of sys.

sys = procest(data,type,Name,Value) estimates a process model with additional options specified by one or more Name,Value pair arguments.

sys = procest(data,init_sys) estimates a process model using the dynamic system init_sys to configure the initial parameterization.

sys = procest(data,___,opt) estimates a polynomial model using an option set, opt, to specify estimation behavior.

Input Arguments


Estimation data.

For time domain estimation, data must be an iddata object containing the input and output signal values.

Time-series models, which are models that contain no measured inputs, cannot be estimated using procest. Use ar, arx, or armax for time-series models instead.

For frequency domain estimation, data can be one of the following:

  • Recorded frequency response data (frd or idfrd)

  • iddata object with its properties specified as follows:

    • InputData — Fourier transform of the input signal

    • OutputData — Fourier transform of the output signal

    • Domain'Frequency'

data must have at least one input and one output.


Process model structure.

type is an acronym that defines the structure of a process model. The acronym string is made up of:

  • P — All 'Type' acronyms start with this letter.

  • 0, 1, 2, or 3 — Number of time constants (poles) to be modeled. Possible integrations (poles in the origin) are not included in this number.

  • I — Integration is enforced (self-regulating process).

  • D — Time delay (dead time).

  • Z — Extra numerator term, a zero.

  • U — Underdamped modes (complex-valued poles) permitted. If U is not included in type, all poles must be real. The number of poles must be 2 or 3.

For information regarding how type affects the structure of a process model, see idproc.

For multiple input/output pairs use a cell array of acronyms, with one entry for each input/output pair.


Estimation options.

opt is an options set, created using procestOptions, that specifies options including:

  • Estimation objective

  • Handling on initial conditions and disturbance component

  • Numerical search method to be used in estimation


Dynamic system that configures the initial parameterization of sys.

If init_sys is an idproc model, procest uses the parameters and constraints defined in init_sys as the initial guess for estimating sys.

If init_sys is not an idproc model, the software first converts init_sys to an identified process model. procest uses the parameters of the resulting model as the initial guess for estimation.

Use the Structure property of init_sys to configure initial guesses and constraints for Kp, Tp1, Tp2, Tp3, Tw, Zeta, Td, and Tz.

To specify an initial guess for, say, the Tp1 parameter of init_sys, set init_sys.Structure.Tp1.Value as the initial guess.

To specify constraints for, say, the Tp2 parameter of init_sys:

  • Set init_sys.Structure.Tp2.Minimum to the minimum Tp2 value.

  • Set init_sys.Structure.Tp2.Maximum to the maximum Tp2 value.

  • Set init_sys.Structure.Tp2.Free to indicate if Tp2 is a free parameter for estimation.

You can similarly specify the initial guess and constraints for the other parameters.

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.


Input delays. InputDelay is a numeric vector specifying a time delay for each input channel. Specify input delays in the time unit stored in the TimeUnit property.

For a system with Nu inputs, set InputDelay to an Nu-by-1 vector. Each entry of this vector is a numerical value that represents the input delay for the corresponding input channel. You can also set InputDelay to a scalar value to apply the same delay to all channels.

Default: 0 for all input channels

Output Arguments


Identified process model.

sys is an idproc model with a structure defined by type.


collapse all

Estimate a First Order Plus Dead Time Model

Obtain the measured input/output data.

load iddemo_heatexchanger_data;
data = iddata(pt,ct,Ts);

Estimate a first-order plus dead time process model.

type = 'P1D';

sys = procest(data,type);

Estimate Over-parameterized Process Model Using Regularization

Use regularization to estimate parameters of an over-parameterized process model.

Assume that gain is known with a higher degree of confidence than other model parameters.

Load data.

load iddata1 z1;

Estimate an unregularized process model.

m = idproc('P3UZ', 'K', 7.5, 'Tw', 0.25, 'Zeta', .3, 'Tp3', 20, 'Tz', 0.02);
m1 = procest(z1,m);

Estimate a regularized process model.

opt = procestOptions;
opt.Regularization.Nominal = 'model';
opt.Regularization.R = [100;1;1;1;1];
opt.Regularization.Lambda = 0.1;
m2 = procest(z1,m,opt);

Compare the model outputs with data.

compare(z1, m1, m2);

Regularization helps steer the estimation process towards the correct parameter values.

Specify Parameter Initial Values for Estimated Process Model

Estimate a process model after specifying initial guesses for parameter values and bounding them.

Obtain input/output data.

data = idfrd(idtf([10 2],[1 1.3 1.2],'iod',0.45),logspace(-2,2,256));

Specify the estimation initializing model.

type = 'P2UZD';
init_sys = idproc(type);

init_sys.Structure.Kp.Value = 1; 
init_sys.Structure.Tw.Value = 2; 
init_sys.Structure.Zeta.Value = 0.1; 
init_sys.Structure.Td.Value = 0; 
init_sys.Structure.Tz.Value = 1; 
init_sys.Structure.Kp.Minimum = 0.1;
init_sys.Structure.Kp.Maximum = 10;
init_sys.Structure.Td.Maximum = 1;
init_sys.Structure.Tz.Maximum = 10;

Specify estimation options.

opt = procestOptions('Display','full','InitialCondition','Zero');

opt.SearchMethod = 'lm'; 
opt.SearchOption.MaxIter = 100;

Estimate the process model.

sys = procest(data,init_sys,opt);

Compare the data to the estimated model.


Detect Overparameterization of Estimated Model

Obtain input/output data.

load iddata1 z1
load iddata2 z2
data = [z1, z2(1:300)];

data is a data set with 2 inputs and 2 outputs. The first input affects only the first output. Similarly, the second input affects only the second output.

In the estimated process model, the cross terms, modeling the effect of the first input on the second output and vice versa, should be negligible. If higher orders are assigned to those dynamics, their estimations show a high level of uncertainty.

Estimate the process model.

type = 'P2UZ'; 

sys = procest(data,type); 

The type variable denotes a model with complex-conugate pair of poles, a zero, and a delay.

To evaluate the uncertainties, plot the frequency response.

w = linspace(0,20*pi,100);
h = bodeplot(sys,w);

See Also

| | | | | | | |

Was this topic helpful?