# Zero-Pole

Model system by zero-pole-gain transfer function

• Library:

## Description

The Zero-Pole block models a system that you define with the zeros, poles, and gain of a Laplace-domain transfer function. This block can model single-input single-output (SISO) and single-input multiple-output (SIMO) systems.

### Conditions for Using This Block

The Zero-Pole block assumes the following conditions:

• The transfer function has the form

`$H\left(s\right)=K\frac{Z\left(s\right)}{P\left(s\right)}=K\frac{\left(s-Z\left(1\right)\right)\left(s-Z\left(2\right)\right)\dots \left(s-Z\left(m\right)\right)}{\left(s-P\left(1\right)\right)\left(s-P\left(2\right)\right)\dots \left(s-P\left(n\right)\right)},$`

where Z represents the zeros, P the poles, and K the gain of the transfer function.

• The number of poles must be greater than or equal to the number of zeros.

• If the poles and zeros are complex, they must be complex-conjugate pairs.

• For a multiple-output system, all transfer functions must have the same poles. The zeros can differ in value, but the number of zeros for each transfer function must be the same.

Note

You cannot use a Zero-Pole block to model a multiple-output system when the transfer functions have a differing number of zeros or a single zero each. Use multiple Zero-Pole blocks to model such systems.

### Modeling a Single-Output System

For a single-output system, the input and the output of the block are scalar time-domain signals. To model this system:

1. Enter a vector for the zeros of the transfer function in the Zeros field.

2. Enter a vector for the poles of the transfer function in the Poles field.

3. Enter a 1-by-1 vector for the gain of the transfer function in the Gain field.

### Modeling a Multiple-Output System

For a multiple-output system, the block input is a scalar and the output is a vector, where each element is an output of the system. To model this system:

1. Enter a matrix of zeros in the Zeros field.

Each column of this matrix contains the zeros of a transfer function that relates the system input to one of the outputs.

2. Enter a vector for the poles common to all transfer functions of the system in the Poles field.

3. Enter a vector of gains in the Gain field.

Each element is the gain of the corresponding transfer function in Zeros.

Each element of the output vector corresponds to a column in Zeros.

### Transfer Function Display on the Block

The Zero-Pole block displays the transfer function depending on how you specify the zero, pole, and gain parameters.

• If you specify each parameter as an expression or a vector, the block shows the transfer function with the specified zeros, poles, and gain. If you specify a variable in parentheses, the block evaluates the variable.

For example, if you specify Zeros as `[3,2,1]`, Poles as `(poles)`, where `poles` is `[7,5,3,1]`, and Gain as `gain`, the block looks like this.

• If you specify each parameter as a variable, the block shows the variable name followed by `(s)` if appropriate.

For example, if you specify Zeros as `zeros`, Poles as `poles`, and Gain as `gain`, the block looks like this.

## Ports

### Input

expand all

Input signal, specified as a scalar with data type `double`.

Data Types: `double`

### Output

expand all

System modeled by a zero-pole gain transfer function, provided as a scalar or vector signal with data type `double`.

Data Types: `double`

## Parameters

expand all

Define the matrix of zeros.

• For a single-output system, enter a vector for the zeros of the transfer function.

• For a multiple-output system, enter a matrix. Each column of this matrix contains the zeros of a transfer function that relates the system input to one of the outputs.

#### Programmatic Use

 Block Parameter: `Zeros` Type: character vector, string Value: vector | matrix Default: `'[1]'`

Define the vector of poles.

• For a single-output system, enter a vector for the poles of the transfer function.

• For a multiple-output system, enter a vector for the poles common to all transfer functions of the system.

#### Programmatic Use

 Block Parameter: `Poles` Type: character vector, string Value: vector Default: `'[0 -1]'`

Define the vector of gains.

• For a single-output system, enter a 1-by-1 vector for the gain of the transfer function.

• For a multiple-output system, enter a vector of gains. Each element is the gain of the corresponding transfer function in Zeros.

#### Programmatic Use

 Block Parameter: `Gain` Type: character vector, string Value: vector Default: `'[1]'`

Tunability level of the zeros, poles, and gains for accelerated simulation modes and simulations deployed using Simulink® Compiler™. Set this parameter to `Auto` to allow Simulink to choose the appropriate level of parameter tunability.

Set this parameter to `Optimized` to generate an optimized representation zeros, poles, and gain in generated code for accelerated and deployed simulations.

Set this parameter to `Unconstrained` to support full tunability (between simulations) of zeros, poles, and gain parameters in accelerated and deployed simulations.

#### Programmatic Use

 Block Parameter: `ParameterTunability` Type: character vector, string Values: `'Auto'` | `'Optimized'` | `'Unconstrained'` Default: `'Auto'`

Absolute tolerance for computing block states, specified as a positive, real-valued, scalar or vector. To inherit the absolute tolerance from the Configuration Parameters, specify `auto` or `-1`.

• If you enter a real scalar, then that value overrides the absolute tolerance in the Configuration Parameters dialog box for computing all block states.

• If you enter a real vector, then the dimension of that vector must match the dimension of the continuous states in the block. These values override the absolute tolerance in the Configuration Parameters dialog box.

• If you enter `auto` or –1, then Simulink uses the absolute tolerance value in the Configuration Parameters dialog box (see Solver Pane) to compute block states.

#### Programmatic Use

 Block Parameter: ` AbsoluteTolerance` Type: character vector, string Values: `'auto'` | `'-1'` | any positive real-valued scalar or vector Default: `'auto'`

Assign a unique name to each state. If this field is blank (`' '`), no name assignment occurs.

• To assign a name to a single state, enter the name between quotes, for example, `'position'`.

• To assign names to multiple states, enter a comma-delimited list surrounded by braces, for example, `{'a', 'b', 'c'}`. Each name must be unique.

• To assign state names with a variable in the MATLAB® workspace, enter the variable without quotes. A variable can be a character vector, string, cell array, or structure.

#### Limitations

• The state names apply only to the selected block.

• The number of states must divide evenly among the number of state names.

• You can specify fewer names than states, but you cannot specify more names than states.

For example, you can specify two names in a system with four states. The first name applies to the first two states and the second name to the last two states.

#### Programmatic Use

 Block Parameter: `ContinuousStateAttributes` Type: character vector, string Values: `' '` | user-defined Default: `' '`

## Block Characteristics

 Data Types `double` Direct Feedthrough `yes` Multidimensional Signals `no` Variable-Size Signals `no` Zero-Crossing Detection `no`