Main Content

polyest

Estimate polynomial model using time- or frequency-domain data

Syntax

sys = polyest(data,[na nb nc nd nf nk])
sys =保利(数据,(na nb数控nd nf nk)名称、值)
sys = polyest(data,init_sys)
sys = polyest(___, opt)
[sys,ic] = polyest(___)

Description

sys= polyest(data,[nanbncndnfnk])estimates a polynomial model,sys, using the time- or frequency-domain data,data.

sysis of the form

A ( q ) y ( t ) = B ( q ) F ( q ) u ( t n k ) + C ( q ) D ( q ) e ( t )

A(q),B(q),F(q),C(q) andD(q) are polynomial matrices.u(t) is the input, andnkis the input delay.y(t) is the output ande(t) is the disturbance signal.na,nb,nc,ndandnfare the orders of theA(q),B(q),C(q),D(q) andF(q) polynomials, respectively.

sys= polyest(data,[nanbncndnfnk],Name,Value)estimates a polynomial model with additional attributes of the estimated model structure specified by one or moreName,Valuepair arguments.

sys= polyest(data,init_sys)estimates a polynomial model using the linear systeminit_systo configure the initial parameterization.

sys= polyest(___,opt)estimates a polynomial model using the option set,opt, to specify estimation behavior.

[sys,ic] = polyest(___)returns the estimated initial conditions as aninitialConditionobject. Use this syntax if you plan to simulate or predict the model response using the same estimation input data and then compare the response with the same estimation output data. Incorporating the initial conditions yields a better match during the first part of the simulation.

Input Arguments

data

Estimation data.

For time-domain estimation,datais aniddataobject containing the input and output signal values.

You can estimate only discrete-time models using time-domain data. For estimating continuous-time models using time-domain data, seetfest.

For frequency-domain estimation,datacan be one of the following:

  • Recorded frequency response data (frd(Control System Toolbox)oridfrd)

  • iddataobject with its properties specified as follows:

    • InputData— Fourier transform of the input signal

    • OutputData— Fourier transform of the output signal

    • Domain— ‘Frequency’

    It may be more convenient to useoeortfestto estimate a model for frequency-domain data.

na

Order of the polynomialA(q).

nais anNy-by-Nymatrix of nonnegative integers.Nyis the number of outputs, andNuis the number of inputs.

namust be zero if you are estimating a model using frequency-domain data.

nb

Order of the polynomialB(q) + 1.

nbis anNy-by-Numatrix of nonnegative integers.Nyis the number of outputs, andNuis the number of inputs.

nc

Order of the polynomialC(q).

ncis a column vector of nonnegative integers of lengthNy.Nyis the number of outputs.

ncmust be zero if you are estimating a model using frequency-domain data.

nd

Order of the polynomialD(q).

ndis a column vector of nonnegative integers of lengthNy.Nyis the number of outputs.

ndmust be zero if you are estimating a model using frequency-domain data.

nf

Order of the polynomialF(q).

nfis anNy-by-Numatrix of nonnegative integers.Nyis the number of outputs, andNuis the number of inputs.

nk

Input delay in number of samples, expressed as fixed leading zeros of theBpolynomial.

nkis anNy-by-Numatrix of nonnegative integers.

nkmust be zero when estimating a continuous-time model.

opt

Estimation options.

optis an options set, created usingpolyestOptions, that specifies estimation options including:

  • Estimation objective

  • Handling of initial conditions

  • Numerical search method to be used in estimation

init_sys

Linear system that configures the initial parameterization ofsys.

You obtaininit_sysby either performing an estimation using measured data or by direct construction.

Ifinit_sysis anidpolymodel,polyestuses the parameters and constraints defined ininit_sysas the initial guess for estimatingsys.

Use theStructureproperty ofinit_systo configure initial guesses and constraints forA(q),B(q),F(q),C(q), andD(q). For example:

  • To specify an initial guess for theA(q) term ofinit_sys, setinit_sys.Structure.A.Valueas the initial guess.

  • To specify constraints for theB(q) term ofinit_sys:

    • Setinit_sys.Structure.B.Minimumto the minimumB(q) coefficient values.

    • Setinit_sys.Structure.B.Maximumto the maximumB(q) coefficient values.

    • Setinit_sys.Structure.B.Freeto indicate whichB(q) coefficients are free for estimation.

Ifinit_sysis not anidpolymodel, the software first convertsinit_systo a polynomial model.polyestuses the parameters of the resulting model as the initial guess for estimation.

Ifoptis not specified, andinit_sysis created by estimation, then the estimation options frominit_sys.Report.OptionsUsedare used.

Name-Value Arguments

Specify optional pairs of arguments asName1=Value1,...,NameN=ValueN, whereNameis the argument name andValue相应的价值。名称-值参数must appear after other arguments, but the order of the pairs does not matter.

R2021a之前,用逗号来分隔每一个名字d value, and encloseNamein quotes.

IODelay

Transport delays.IODelayis a numeric array specifying a separate transport delay for each input/output pair.

For continuous-time systems, specify transport delays in the time unit stored in theTimeUnitproperty. For discrete-time systems, specify transport delays in integer multiples of the sample time,Ts.

For a MIMO system withNyoutputs andNuinputs, setIODelayto aNy-by-Nuarray. Each entry of this array is a numerical value that represents the transport delay for the corresponding input/output pair. You can also setIODelayto a scalar value to apply the same delay to all input/output pairs.

Default:0for all input/output pairs

InputDelay

Input delay for each input channel, specified as a scalar value or numeric vector. For continuous-time systems, specify input delays in the time unit stored in theTimeUnitproperty. For discrete-time systems, specify input delays in integer multiples of the sample timeTs. For example,InputDelay = 3means a delay of three sample times.

For a system withNuinputs, setInputDelayto anNu-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 setInputDelayto a scalar value to apply the same delay to all channels.

Default:0

IntegrateNoise

Logical vector specifying integrators in the noise channel.

IntegrateNoiseis a logical vector of lengthNy, whereNyis the number of outputs.

SettingIntegrateNoisetotruefor a particular output results in the model:

A ( q ) y ( t ) = B ( q ) F ( q ) u ( t n k ) + C ( q ) D ( q ) e ( t ) 1 q 1

Where, 1 1 q 1 is the integrator in the noise channel,e(t).

UseIntegrateNoiseto create an ARIMAX model.

For example,

loadiddata1z1; z1 = iddata(cumsum(z1.y),cumsum(z1.u),z1.Ts,'InterSample','foh'); sys = polyest(z1, [2 2 2 0 0 1],'IntegrateNoise',true);

Output Arguments

sys

Polynomial model, returned as anidpolymodel. This model is created using the specified model orders, delays, and estimation options.

Ifdata.Tsis zero,sysis a continuous-time model representing:

Y ( s ) = B ( s ) F ( s ) U ( s ) + E ( s )

Y(s),U(s) andE(s) are the Laplace transforms of the time-domain signalsy(t),u(t) ande(t), respectively.

Information about the estimation results and options used is stored in theReportproperty of the model.Reporthave the following fields:

Report Field Description
Status

Summary of the model status, which indicates whether the model was created by construction or obtained by estimation.

Method

Estimation command used.

InitialCondition

Handling of initial conditions during model estimation, returned as one of the following values:

  • 'zero'— The initial conditions were set to zero.

  • 'estimate'— The initial conditions were treated as independent estimation parameters.

  • 'backcast'— The initial conditions were estimated using the best least squares fit.

This field is especially useful to view how the initial conditions were handled when theInitialConditionoption in the estimation option set is'auto'.

Fit

Quantitative assessment of the estimation, returned as a structure. SeeLoss Function and Model Quality Metricsfor more information on these quality metrics. The structure has the following fields:

Field Description
FitPercent

Normalized root mean squared error (NRMSE) measure of how well the response of the model fits the estimation data, expressed as the percentagefitpercent= 100(1-NRMSE).

LossFcn

Value of the loss function when the estimation completes.

MSE

Mean squared error (MSE) measure of how well the response of the model fits the estimation data.

FPE

Final prediction error for the model.

AIC

Raw Akaike Information Criteria (AIC) measure of model quality.

AICc

Small-sample-size corrected AIC.

nAIC

Normalized AIC.

BIC

Bayesian Information Criteria (BIC).

Parameters

Estimated values of model parameters.

OptionsUsed

Option set used for estimation. If no custom options were configured, this is a set of default options. SeepolyestOptionsfor more information.

RandState

State of the random number stream at the start of estimation. Empty,[], if randomization was not used during estimation. For more information, seerng.

DataUsed

Attributes of the data used for estimation, returned as a structure with the following fields.

Field Description
Name

Name of the data set.

Type

Data type.

Length

Number of data samples.

Ts

Sample time.

InterSample

Input intersample behavior, returned as one of the following values:

  • 'zoh'— Zero-order hold maintains a piecewise-constant input signal between samples.

  • 'foh'— First-order hold maintains a piecewise-linear input signal between samples.

  • 'bl'— Band-limited behavior specifies that the continuous-time input signal has zero power above the Nyquist frequency.

InputOffset

Offset removed from time-domain input data during estimation. For nonlinear models, it is[].

OutputOffset

Offset removed from time-domain output data during estimation. For nonlinear models, it is[].

Termination

Termination conditions for the iterative search used for prediction error minimization, returned as a structure with the following fields:

Field Description
WhyStop

Reason for terminating the numerical search.

Iterations

Number of search iterations performed by the estimation algorithm.

FirstOrderOptimality

-norm of the gradient search vector when the search algorithm terminates.

FcnCount

Number of times the objective function was called.

UpdateNorm

Norm of the gradient search vector in the last iteration. Omitted when the search method is'lsqnonlin'or'fmincon'.

LastImprovement

Criterion improvement in the last iteration, expressed as a percentage. Omitted when the search method is'lsqnonlin'or'fmincon'.

Algorithm

Algorithm used by'lsqnonlin'or'fmincon'search method. Omitted when other search methods are used.

For estimation methods that do not require numerical search optimization, theTerminationfield is omitted.

For more information on usingReport, seeEstimation Report.

ic

Estimated initial conditions, returned as aninitialConditionobject or an object array ofinitialConditionvalues.

  • For a single-experiment data set,icrepresents, in state-space form, the free response of the transfer function model (AandCmatrices) to the estimated initial states (x0).

  • For a multiple-experiment data set withNe实验中,icis an object array of lengthNethat contains one set ofinitialConditionvalues for each experiment.

Ifpolyestreturnsicvalues of0and the you know that you have non-zero initial conditions, set the'InitialCondition'option inpolyestOptionsto'estimate'and pass the updated option set topolyest. For example:

opt = polyestOptions('InitialCondition','estimate') [sys,ic] = polyest(data,[nb nc nd nf nk],opt)
The default'auto'setting of'InitialCondition'uses the'zero'method when the initial conditions have a negligible effect on the overall estimation-error minimization process. Specifying'estimate'ensures that the software estimates values foric.

For more information, seeinitialCondition. For an example of using this argument, seeObtain Initial Conditions.

Examples

collapse all

Estimate a model with redundant parameterization. That is, a model with all polynomials ( A , B , C , D , and F ) active.

Load estimation data.

loadiddata2z2;

Specify the model orders and delays.

na = 2; nb = 2; nc = 3; nd = 3; nf = 2; nk = 1;

Estimate the model.

sys = polyest(z2,[na nb nc nd nf nk]);

Estimate a regularized polynomial model by converting a regularized ARX model.

Load estimation data.

loadregularizationExampleData.matm0simdata;

Estimate an unregularized polynomial model of order 20.

m1 = polyest(m0simdata(1:150),[0 20 20 20 20 1]);

Estimate a regularized polynomial model of the same order. Determine the Lambda value by trial and error.

opt = polyestOptions; opt.Regularization.Lambda = 1; m2 = polyest(m0simdata(1:150),[0 20 20 20 20 1],opt);

Obtain a lower-order polynomial model by converting a regularized ARX model and reducing its order. Usearxregulto determine the regularization parameters.

[L,R] = arxRegul(m0simdata(1:150),[30 30 1]); opt1 = arxOptions; opt1.Regularization.Lambda = L; opt1.Regularization.R = R; m0 = arx(m0simdata(1:150),[30 30 1],opt1); mr = idpoly(balred(idss(m0),7));

Compare the model outputs against the data.

opt2 = compareOptions('InitialCondition','z'); compare(m0simdata(150:end),m1,m2,mr,opt2);

Figure contains an axes object. The axes object contains 4 objects of type line. These objects represent Validation data (y1), m1: 23.82%, m2: 26.09%, mr: 64.91%.

Load input/output data and create cumulative sum input and output signals for estimation.

loadiddata1z1data = iddata(cumsum(z1.y),cumsum(z1.u),z1.Ts,'InterSample','foh');

Specify the model polynomial orders. Set the orders of the inactive polynomials, D and F , to0.

na = 2; nb = 2; nc = 2; nd = 0; nf = 0; nk = 1;

Identify an ARIMAX model by setting the'IntegrateNoise'option totrue.

sys = polyest(data,[na nb nc nd nf nk],'IntegrateNoise',true);

Estimate a multi-output ARMAX model for a multi-input, multi-output data set.

Load estimation data.

loadiddata1z1loadiddata2z2data = [z1 z2(1:300)];

datais 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.

Specify the model orders and delays. TheFandDpolynomials are inactive.

na = [2 2; 2 2]; nb = [2 2; 3 4]; nk = [1 1; 0 0]; nc = [2;2]; nd = [0;0]; nf = [0 0; 0 0];

Estimate the model.

sys = polyest(data,[na nb nc nd nf nk]);

In the estimated ARMAX model, the cross terms, which model the effect of the first input on the second output and vice versa, are negligible. If you assigned higher orders to those dynamics, their estimation would show a high level of uncertainty.

Analyze the results.

h = bodeplot(sys); showConfidence(h,3)

The responses from the cross terms show larger uncertainty.

Load the data.

loadiddata1icz1i

Estimate a polynomial modelsysand return the initial conditions inic.

na = 2; nb = 2; nc = 3; nd = 3; nf = 2; nk = 1; [sys,ic] = polyest(z1i,[na nb nc nd nf nk]); ic
ic = initialCondition with properties: A: [7x7 double] X0: [7x1 double] C: [0 0 0 0 0 0 1] Ts: 0.1000

icis aninitialConditionobject that encapsulates the free response ofsys, in state-space form, to the initial state vector inX0. You can incorporateicwhen you simulatesyswith thez1iinput signal and compare the response with thez1ioutput signal.

Tips

  • In most situations, all the polynomials of an identified polynomial model are not simultaneously active. Set one or more of the ordersna,nc,ndandnfto zero to simplify the model structure.

    For example, you can estimate an Output-Error (OE) model by specifyingna,ncandndas zero.

    Alternatively, you can use a dedicated estimating function for the simplified model structure. Linear polynomial estimation functions includeoe,bj,arxandarmax.

Alternatives

  • To estimate a polynomial model using time-series data, usear.

  • Usepolyestto estimate a polynomial of arbitrary structure. If the structure of the estimated polynomial model is known, that is, you know which polynomials will be active, then use the appropriate dedicated estimating function. For examples, for an ARX model, usearx. Other polynomial model estimating functions include,oe,armax, andbj.

  • To estimate a continuous-time transfer function, usetfest. You can also useoe, but only with continuous-time frequency-domain data.

Extended Capabilities

Version History

Introduced in R2012a