# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

# IDNLHW Model

Simulate Hammerstein-Wiener model in Simulink software

## Library

System Identification Toolbox

## Description

The IDNLHW Model block simulates a Hammerstein-Wiener (`idnlhw`) model for time-domain input and output data.

## Input

Input signal to the model.

For multi-input models, specify the input as an `Nu`-element vector, where `Nu` is the number of inputs. For example, you can use a Vector Concatenate block to concatenate scalar signals into a vector signal.

 Note:   Do not use a Bus Creator or Mux block to produce the vector signal.

## Output

Simulated output from the model.

## Parameters

Model

Name of the `idnlhw` variable in the MATLAB® workspace.

Initial conditions

Specifies the initial states as one of the following:

• `Zero`: Specifies zero, which corresponds to a simulation starting from a state of rest.

• `State values`: When selected, you must specify a vector of length equal to the number of states in the model in the Specify a vector of state values field.

If you do not know the initial states, you can estimate these states, as follows:

• To simulate around a given input level when you do not know the corresponding steady-state output level, you can estimate the equilibrium state values using the `findop` command.

For example, to simulate a model `M` about a steady-state point where the input is `1` and the output is unknown, you can enter `X0`, such that:

`X0 = findop(M,'steady',1,NaN)`
• To estimate the initial states such that the simulated response of the model matches specified output data for the same input, use the `findstates`.

For example, for the data set `z` and model `m`, you can enter `X0`, such that:

`X0 = findstates(m,z)`

## Examples

### Example 1

In this example, you estimate a Hammerstein-Wiener model from data and compare the model output of the model to the measured output of the system.

```load twotankdata ```

2. Create a data object from sample data.

```z = iddata(y,u,0.2, ... 'Name','Two tank system',... 'Tstart',0); ```

3. Estimate a Hammerstein-Wiener model.

`mhw1 = nlhw(z,[1 5 3],pwlinear,pwlinear);`
4. Build the following Simulink® model using the IDDATA Source, IDNLHW Model, and Scope blocks.

5. Double-click the IDDATA Source block and enter the following into the block parameter dialog box:

• IDDATA Object: z

Click OK.

6. Double-click the IDNLHW Model block and enter the following into the block parameter dialog box:

• Model: mhw1

• Initial Conditions: Zero

7. Run the simulation.

Click the Scope block to view the difference between the measured output and the model output. Use the Autoscale toolbar button to scale the axes.

### Example 2

In this example, you reduce the difference between the measured and simulated responses using suitable initial state values. To achieve this, you use the `findstates` command to estimate an initial state vector for the model from the data.

1. Estimate initial states from the data `z`:

```x0 = findstates(mhw1,z,[],'maxiter',50); ```

2. Set the Initial Conditions to ```State Values```. Enter `x0` in the corresponding field.

3. Run the simulation.