Main Content


Create a dead-zone nonlinearity estimator object


NL = deadzone
NL = deadzone('ZeroInterval',[a,b])


NL = deadzone creates a default dead-zone nonlinearity estimator object for estimating Hammerstein-Wiener models. The interval in which the dead-zone exists (zero interval) is set to [NaN NaN]. The initial value of the zero interval is determined from the estimation data range, during estimation using nlhw. Use dot notation to customize the object properties, if needed.

NL = deadzone('ZeroInterval',[a,b]) creates a dead-zone nonlinearity estimator object initialized with zero interval, [a,b].

Alternatively, use NL = deadzone([a,b]).

Object Description

deadzone is an object that stores the dead-zone nonlinearity estimator for estimating Hammerstein-Wiener models.

Use deadzone to define a nonlinear function y=F(x,θ), where y and x are scalars, and θ represents the parameters a and b, which define the zero interval.

The dead-zone nonlinearity function has the following characteristics:

ax<b              F(x)=0x<a                   F(x)=xaxb                   F(x)=xb

For example, in the following plot, the dead-zone is in the interval [-4,4].

The value F(x) is computed by evaluate(NL,x), where NL is the deadzone object.

For deadzone object properties, see Properties.


collapse all

NL = deadzone;

Specify the zero interval.

NL.ZeroInterval = [-4,5];

Load estimation data.

load twotankdata;
z = iddata(y,u,0.2,'Name','Two tank system');
z1 = z(1:1000);

Create a deadzone object, and specify the initial guess for the zero-interval.

OutputNL = deadzone('ZeroInterval',[-0.1 0.1]);

Estimate model with no input nonlinearity.

m = nlhw(z1,[2 3 0],[],OutputNL);

Load the estimation data.

load motorizedcamera;

Create an iddata object.

z = iddata(y,u,0.02,'Name','Motorized Camera','TimeUnit','s');

z is an iddata object with 6 inputs and 2 outputs.

Specify the model orders and delays.

Orders = [ones(2,6),ones(2,6),ones(2,6)];

Specify the same nonlinearity estimator for each input channel.

InputNL = saturation;

Specify different nonlinearity estimators for each output channel.

 OutputNL = [deadzone,wavenet];

Estimate the Hammerstein-Wiener model.

sys = nlhw(z,Orders,InputNL,OutputNL);

To see the shape of the estimated input and output nonlinearities, plot the nonlinearities.


Click on the input and output nonlinearity blocks on the top of the plot to see the nonlinearities.

Input Arguments

collapse all

Zero interval of the dead-zone, specified as a 2–element row vector of doubles.

The dead-zone nonlinearity is initialized at the interval [a,b]. The interval values are adjusted to the estimation data by nlhw. To remove the lower limit, set a to -Inf. The lower limit is not adjusted during estimation. To remove the upper limit, set b to Inf. The upper limit is not adjusted during estimation.

When the interval is [NaN NaN], the initial value of the zero interval is determined from the estimation data range during estimation using nlhw.

Example: [-2 1]



Zero interval of the dead-zone, specified as a 2–element row vector of doubles.

Default: [NaN NaN]

Output Arguments

collapse all

Dead-zone nonlinearity estimator object, returned as a deadzone object.

See Also

Introduced in R2007a