Main Content

deadzone

Create a dead-zone nonlinearity estimator object

Syntax

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

Description

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.

Examples

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.

plot(sys)

Figure Hammerstein-Wiener Model Plot contains 6 axes and other objects of type uipanel, uicontrol. Axes 1 contains an object of type line. This object represents sys:saturation. Axes 2 contains an object of type line. This object represents sys:saturation. Axes 3 contains an object of type line. This object represents sys:saturation. Axes 4 contains an object of type line. This object represents sys:saturation. Axes 5 contains an object of type line. This object represents sys:saturation. Axes 6 contains an object of type line. This object represents sys:saturation.

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]

Properties

ZeroInterval

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