Documentation 
On this page… 

About System Identification Toolbox Model Objects When to Construct a Model Structure Independently of Estimation 
Objects are instances of model classes. Each class is a blueprint that defines the following information about your model:
How the object stores data
Which operations you can perform on the object
This toolbox includes nine classes for representing models. For example, idpoly represents linear inputoutput polynomial models, and idss represents linear statespace models. For a complete list of available model objects, see Available Linear Models and Available Nonlinear Models.
Model properties define how a model object stores information. Model objects store information about a model, including the mathematical form of a model, names of input and output channels, units, names and values of estimated parameters, parameter uncertainties, algorithm specifications, and estimation information. For example, an idpoly model has an InputName property for storing one or more input channel names. Different model objects have different properties.
The allowed operations on an object are called methods. In System Identification Toolbox™ software, some methods have the same name but apply to multiple model objects. For example, bode creates a bode plot for all linear model objects. However, other methods are unique to a specific model object. For example, the estimation method canon is unique to the statespace idss model.
Every class has a special method for creating objects of that class, called the constructor. Using a constructor creates an instance of the corresponding class or instantiates the object. The constructor name is the same as the class name. For example, idpoly is both the name of the class representing linear blackbox polynomial models and the name of the constructor for instantiating the model object.
A linear model is often sufficient to accurately describe the system dynamics and, in most cases, you should first try to fit linear models. Available linear structures include transfer functions and statespace models, summarized in the following table.
Model Type  Usage  Learn More 

Transfer function (idtf)  Use this structure to represent transfer functions: $$y=\frac{num}{den}u+e$$ where num and den are polynomials of arbitrary lengths. You can specify initial guesses for, and estimate, num, den, and transport delays.  Identifying Transfer Function Models 
Process model (idproc)  Use this structure to represent process models that are low order transfer functions expressed in polezero form. They include integrator, delay, zero, and up to 3 poles.  Identifying Process Models 
Statespace model (idss)  Use this structure to represent known statespace structures and blackbox structures. You can fix certain parameters to known values and estimate the remaining parameters. You can also prescribe minimum/maximum bounds on the values of the free parameters. If you need to specify parameter dependencies or parameterize the statespace matrices using your own parameters, use a greybox model.  Identifying StateSpace Models 
Polynomial models (idpoly)  Use to represent linear transfer functions based on the general
form inputoutput polynomial form: $$Ay=\frac{B}{F}u+\frac{C}{D}e$$ where A, B, C, D and F are polynomials with coefficients that the toolbox estimates from data. Typically, you begin modeling using simpler forms of this generalized structure (such as ARX:$$Ay=Bu+e$$ and OE: $$y=\frac{B}{F}u+e$$) and, if necessary, increase the model complexity.  Identifying InputOutput Polynomial Models 
Greybox model (idgrey)  Use to represent arbitrary parameterizations of statespace models. For example, you can use this structure to represent your ordinary differential or difference equation (ODE) and to define parameter dependencies.  Estimating Linear GreyBox Models 
You use model constructors to create a model object at the command line by specifying all required model properties explicitly.
You must construct the model object independently of estimation when you want to:
Simulate or analyze the effect of model's parameters on its response, independent of estimation.
Specify an initial guess for specific model parameter values before estimation. Specify bounds on parameter values, or set up the auxiliary model information in advance, or both. Auxiliary model information includes specifying input/output names, units, Notes, user data, etc.
In most cases, you can use the estimation commands to both construct and estimate the model—without having to construct the model object independently. For example, the estimation command tfest creates a transfer function model using data and some information on the order of the model  the number of poles and zeros. For information about how to both construct and estimate models with a single command, see Model Estimation Commands.
In case of greybox models, you must always construct the model object first and then estimate the parameters of the ordinary differential or difference equation.
The following table summarizes the model constructors available in the System Identification Toolbox product for representing various types of models.
After model estimation, you can recognize the corresponding model objects in the MATLAB^{®} Workspace browser by their class names. The name of the constructor matches the name of the object it creates.
For information about how to both construct and estimate models with a single command, see Model Estimation Commands.
Summary of Model Constructors
Model Constructor  Resulting Model Class 

idfrd  Nonparametric frequencyresponse model. 
idproc  Continuoustime, loworder transfer functions (process models). 
idpoly  Linear inputoutput polynomial models:

idss  Linear statespace models. 
idtf  Linear transfer function models. 
idgrey  Linear ordinary differential or difference equations (greybox models). You write a function that translates user parameters to statespace matrices. Can also be viewed as statespace models with userspecified parameterization. 
idnlgrey  Nonlinear ordinary differential or difference equation (greybox models). You write a function or MEXfile to represent the governing equations. 
idnlarx  Nonlinear ARX models, which define the predicted output as a nonlinear function of past inputs and outputs. 
idnlhw  Nonlinear HammersteinWiener models, which include a linear dynamic system with nonlinear static transformations of inputs and outputs. 
For more information about when to use these commands, see When to Construct a Model Structure Independently of Estimation.
The way a model object stores information is defined by the properties of the corresponding model class.
Each model object has properties for storing information that are relevant only to that specific model type. The idtf, idgrey, idpoly, idproc, and idss model objects are based on the idlti superclass and inherit all idlti properties.
Similarly, the nonlinear models idnlarx, idnlhw, and idnlgrey are based on the idnlmodel superclass and inherit all idnlmodel properties.
In general, all model objects have properties that belong to the following categories:
Names of input and output channels, such as InputName and OutputName
Sampling interval of the model, such as Ts
Units for time or frequency
Model order and mathematical structure (for example, ODE or nonlinearities)
Properties that store estimation results (Report)
User comments, such as Notes and Userdata
Estimation algorithm information (nonlinear models only)
Algorithm
Structure includes fields that specify the estimation method. Algorithm includes another structure, called Advanced, which provides additional flexibility for setting the search algorithm. Different fields apply to different estimation techniques.
For linear parametric models, Algorithm specifies the frequency weighing of the estimation using the Focus property.
For information about getting help on object properties, see the model reference pages.
The following table summarizes the commands for viewing and changing model property values. Property names are not case sensitive. You do not need to type the entire property name if the first few letters uniquely identify the property.
Task  Command  Example 

View all model properties and their values  get  Load sample data, compute an ARX model, and list the model
properties:load iddata8
m_arx=arx(z8,[4 3 2 3 0 0 0]);
get(m_arx) 
Access a specific model property  Use dot notation  View the A matrix containing the estimated
parameters in the previous model:m_arx.a 
For properties, such as Report, that are
configured like structures, use dot notation of the form model.PropertyName.FieldName. FieldName is the name of any field of the property.  View the method used in ARX model estimation:m_arx.Report.Method  
Change model property values  dot notation  Change the input delays for all three input channels to [1
1 1] for an ARX model:m_arx.InputDelay = [1 1 1] 
Access model parameter values and uncertainty information  Use getpar, getpvec and getcov See Also: polydata, idssdata, tfdata, zpkdata 

Set model property values and uncertainty information  Use setpar, setpvec and setcov 

Validate each model directly after estimation to help finetune your modeling strategy. When you do not achieve a satisfactory model, you can try a different model structure and order, or try another identification algorithm. For more information about validating and troubleshooting models, see Validating Models After Estimation.