Main Content

Sigmoid network function for nonlinear ARX and Hammerstein-Wiener models

An `idSigmoidNetwork`

object implements a sigmoid network
function, and is a nonlinear mapping function for estimating nonlinear ARX and Nonlinear
Hammerstein-Wiener models. The mapping function, which is also referred to as a
*nonlinearity*, uses a combination of linear weights, an offset and a
nonlinear function to compute its output. The nonlinear function contains sigmoid unit
functions that operate on a ridge combination (weighted linear sum) of inputs.

Mathematically, `idSigmoidNetwork`

is a function that maps
*m* inputs *X*(*t*) =
[*x*(*t*_{1}),*x*_{2}(*t*),…,*x _{m}*(

$$y(t)={y}_{0}+{({\rm X}(t)-\overline{X})}^{T}PL+S({\rm X}(t))$$

Here:

*X*(*t*) is an*m*-by-1 vector of inputs, or*regressors*, with mean $$\overline{{\rm X}}$$.*y*is the output offset, a scalar._{0}*P*is an*m*-by-*p*projection matrix, where*m*is the number of regressors and is*p*is the number of linear weights.*m*must be greater than or equal to*p*.*L*is a*p*-by-1 vector of weights.*S*(*X*) is a sum of dilated and translated sigmoid functions. The total number of sigmoid functions is referred to as the*number of units**n*of the network.

For the definition of the sigmoid function term *S*(*X*)
, see More About.

Use `idSigmoidNetwork`

as the value of the `OutputFcn`

property of an `idnlarx`

model or the
`InputNonlinearity`

and `OutputLinearity`

properties
of an `idnlhw`

object. For example, specify
`idSigmoidNetwork`

when you estimate an `idnlarx`

model with
the following
command.

sys = nlarx(data,regressors,idSigmoidNetwork)

`nlarx`

estimates the model, it essentially estimates the parameters
of the `idSigmoidNetwork`

function.
You can configure the `idSigmoidNetwork`

function to disable components and
fix parameters. To omit the linear component, set `LinearFcn.Use`

to
`false`

. To omit the offset, set `Offset.Use`

to
`false`

. To specify known values for the linear function and the offset,
set their `Value`

attributes directly and set the corresponding
`Free`

attributes to `False`

. Use `evaluate`

to compute the output of the function for a given vector of
inputs.

creates a
`S`

= idSigmoidNetwork`idSigmoidNetwork`

object `S`

that uses 10 units. The
number of inputs is determined during model estimation and the number of outputs is 1.

specifies whether the function uses a linear function as a subcomponent.`S`

= idSigmoidNetwork(`numUnits`

,`UseLinearFcn`

)

specifies whether the function uses an offset term
`S`

= idSigmoidNetwork(`numUnits`

,`UseLinearFcn`

,`UseOffset`

)*y _{0}* parameter.

`idSigmoidNetwork`

uses an iterative search technique for estimating
parameters.

`nlhw`

| `nlarx`

| `idLinear`

| `idPolynomial1D`

| `idTreePartition`

| `idWaveletNetwork`

| `idSaturation`

| `idPiecewiseLinear`

| `idUnitGain`

| `idDeadZone`

| `idFeedforwardNetwork`

| `idCustomNetwork`

| `idnlhw`

| `idnlarx`

| `evaluate`