Black-box modeling is useful when your primary interest is in fitting the data regardless of a particular mathematical structure of the model. The toolbox provides several linear and nonlinear black-box model structures, which have traditionally been useful for representing dynamic systems. These model structures vary in complexity depending on the flexibility you need to account for the dynamics and noise in your system. You can choose one of these structures and compute its parameters to fit the measured response data.

Black-box modeling is usually a trial-and-error process, where you estimate the parameters of various structures and compare the results. Typically, you start with the simple linear model structure and progress to more complex structures. You might also choose a model structure because you are more familiar with this structure or because you have specific application needs.

The simplest linear black-box structures require the fewest options to configure:

Transfer function, with a given number of poles and zeros.

Linear ARX model, which is the simplest input-output polynomial model.

State-space model, which you can estimate by specifying the number of model states

Estimation of some of these structures also uses noniterative estimation algorithms, which further reduces complexity.

You can configure a model structure using the *model
order*. The definition of model order varies depending
on the type of model you select. For example, if you choose a transfer
function representation, the model order is related to the number
of poles and zeros. For state-space representation, the model order
corresponds to the number of states. In some cases, such as for linear
ARX and state-space model structures, you can estimate the model order
from the data.

If the simple model structures do not produce good models, you can select more complex model structures by:

Specifying a higher model order for the same linear model structure. Higher model order increases the model flexibility for capturing complex phenomena. However, unnecessarily high orders can make the model less reliable.

Explicitly modeling the noise:

*y*(*t*)=*G**u*(*t*)+*H**e*(*t*)where

*H*models the additive disturbance by treating the disturbance as the output of a linear system driven by a white noise source*e*(*t*).Using a model structure that explicitly models the additive disturbance can help to improve the accuracy of the measured component

*G*. Furthermore, such a model structure is useful when your main interest is using the model for predicting future response values.Using a different linear model structure.

Using a nonlinear model structure.

Nonlinear models have more flexibility in capturing complex phenomena than linear models of similar orders. See Nonlinear Model Structures.

Ultimately, you choose the simplest model structure that provides the best fit to your measured data. For more information, see Estimating Linear Models Using Quick Start.

Regardless of the structure you choose for estimation, you can
simplify the model for your application needs. For example, you can
separate out the measured dynamics (*G*) from the
noise dynamics (*H*) to obtain a simpler model that
represents just the relationship between *y* and *u*.
You can also linearize a nonlinear model about an operating point.

A linear model is often sufficient to accurately describe the system dynamics and, in most cases, you should first try to fit linear models. If the linear model output does not adequately reproduce the measured output, you might need to use a nonlinear model.

You can assess the need to use a nonlinear model structure by plotting the response of the system to an input. If you notice that the responses differ depending on the input level or input sign, try using a nonlinear model. For example, if the output response to an input step up is faster than the response to a step down, you might need a nonlinear model.

Before building a nonlinear model of a system that you know is nonlinear, try transforming the input and output variables such that the relationship between the transformed variables is linear. For example, consider a system that has current and voltage as inputs to an immersion heater, and the temperature of the heated liquid as an output. The output depends on the inputs via the power of the heater, which is equal to the product of current and voltage. Instead of building a nonlinear model for this two-input and one-output system, you can create a new input variable by taking the product of current and voltage and then build a linear model that describes the relationship between power and temperature.

If you cannot determine variable transformations that yield a linear relationship between input and output variables, you can use nonlinear structures such as Nonlinear ARX or Hammerstein-Wiener models. For a list of supported nonlinear model structures and when to use them, see Nonlinear Model Structures.

You can use the System Identification app or commands to estimate linear and nonlinear models of various structures. In most cases, you choose a model structure and estimate the model parameters using a single command.

Consider the mass-spring-damper system, described in About Dynamic Systems and Models. If you do not know the equation of motion of this system, you can use a black-box modeling approach to build a model. For example, you can estimate transfer functions or state-space models by specifying the orders of these model structures.

A transfer function is a ratio of polynomials:

For the mass-spring damper system, this transfer function is:

which is a system with no zeros and 2 poles.

In discrete-time, the transfer function of the mass-spring-damper system can be:

where the model orders correspond to the number of coefficients
of the numerator and the denominator (`nb`

= 1 and `nf`

=
2) and the input-output delay equals the lowest order exponent of *z*^{–1} in
the numerator (`nk`

= 1).

In continuous-time, you can build a linear transfer function
model using the `tfest`

command:

m = tfest(data,2,0)

where `data`

is your measured input-output
data, represented as an `iddata`

object
and the model order is the set of number of poles (2) and the number
of zeros (0).

Similarly, you can build a discrete-time model Output Error structure using the following command:

m = oe(data,[1 2 1])

The model order is [`nb nf nk`

] = [```
1
2 1
```

]. Usually, you do not know the model orders in advance.
You should try several model order values until you find the orders
that produce an acceptable model.

Alternatively, you can choose a state-space structure to represent
the mass-spring-damper system and estimate the model parameters using
the `ssest`

or the `n4sid`

command:

m = ssest(data,2)

where * order* =

`2`

represents
the number of states in the model.In black-box modeling, you do not need the system’s equation of motion—only a guess of the model orders.

For more information about building models, see Steps for Using the System Identification App and Model Estimation Commands.