linearize(idnlhw) - Linearize Hammerstein-Wiener model

Syntax

SYS = linearize(NLSYS,U0)
SYS = linearize(NLSYS,U0,X0)

Description

SYS = linearize(NLSYS,U0) linearizes a Hammerstein-Wiener model about an equilibrium operating point. When using this syntax, equilibrium state values for the linearization are calculated automatically using U0.

SYS = linearize(NLSYS,U0,X0) linearizes the idnlhw model NLSYS about the operating point specified by the input U0 and state values X0. In this usage, X0 need not contain equilibrium state values. For more information about the definition of states for idnlhw models, see Definition of idnlhw States.

The output is a linear model that is the best linear approximation for inputs that vary in a small neighborhood of a constant input u(t) = U. The linearization is based on tangent linearization.

Input

Input

Algorithm

The idnlhw model structure represents a nonlinear system using a linear system connected in series with one or two static nonlinear systems. For example, you can use a static nonlinearity to simulate saturation or dead-zone behavior. The following figure shows the nonlinear system as a linear system that is modified by static input and output nonlinearities, where function f represents the input nonlinearity, g represents the output nonlinearity, and [A,B,C,D] represents a state-space parameterization of the linear model.

The following equations govern the dynamics of an idnlhw model:

v(t) = f(u(t))

X(t+1) = AX(t)+Bv(t)

w(t) = CX(t)+Dv(t)

y(t) = g(w(t))

where

The linear approximation of the Hammerstein-Weiner model about an operating point (X*, u*) is as follows:

where

where y* is the output of the model corresponding to input u* and state vector X*, v* = f(u*), and w* is the response of the linear model for input v* and state X*.

Examples

In this example you linearize a Hammerstein-Wiener model with two inputs at an equilibrium point, and compare the linearized model response to the original model response.

  1. Load the sample data to create iddata object z.

    load iddata2
    load iddata3
    z2.Ts = z3.Ts;
    z = [z2(1:300),z3]; % Estimation data
    
  2. Estimate an idnlhw model using a combination of pwlinear, poly1d, sigmoidnet and customnet nonlinearities.

    orders = [2 2 3 4 1 5; 2 5 1 2 5 2];
    model = nlhw(z,orders,[pwlinear;poly1d],...
                 [sigmoidnet;customnet(@gaussunit)]);
  3. Linearize the model at an equilibrium operating point corresponding to input levels of 10 and 5 respectively. To do this you first compute the operating point using findop, then linearize the model about the computed input and state values.

    [x,u] = findop(model,'steady',[10,5]); 
    sys = linearize(model,u,x); %sys is a state-space model
    
  4. Compare the step response of the original model to that of the linearized model.

    step(model,sys)

    MATLAB® software responds with the following plots.

    The step response of original model is closely tracked by that of the linearized model.

See Also

linapp 
findop(idnlhw) 

  


 © 1984-2008- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS