zpkdata

Access zero-pole-gain data

Syntax

```[z,p,k] = zpkdata(sys) [z,p,k,Ts] = zpkdata(sys) [z,p,k,Ts,covz,covp,covk] = zpkdata(sys) ```

Description

`[z,p,k] = zpkdata(sys) ` returns the zeros `z`, poles `p`, and gain(s) `k` of the zero-pole-gain model `sys`. The outputs `z` and `p` are cell arrays with the following characteristics:

• `z` and `p` have as many rows as outputs and as many columns as inputs.

• The `(i,j)` entries `z{i,j}` and `p{i,j}` are the (column) vectors of zeros and poles of the transfer function from input `j` to output `i`.

The output `k` is a matrix with as many rows as outputs and as many columns as inputs such that `k(i,j)` is the gain of the transfer function from input `j` to output `i`. If `sys` is a transfer function or state-space model, it is first converted to zero-pole-gain form using `zpk`.

For SISO zero-pole-gain models, the syntax

```[z,p,k] = zpkdata(sys,'v') ```

forces `zpkdata` to return the zeros and poles directly as column vectors rather than as cell arrays (see example below).

`[z,p,k,Ts] = zpkdata(sys) ` also returns the sample time `Ts`.

`[z,p,k,Ts,covz,covp,covk] = zpkdata(sys) ` also returns the covariances of the zeros, poles and gain of the identified model `sys`. `covz` is a cell array such that `covz{ky,ku}` contains the covariance information about the zeros in the vector `z{ky,ku}`. `covz{ky,ku}` is a 3-D array of dimension 2-by-2-by-Nz, where `Nz` is the length of `z{ky,ku}`, so that the `(1,1)` element is the variance of the real part, the `(2,2)` element is the variance of the imaginary part, and the `(1,2)` and `(2,1)` elements contain the covariance between the real and imaginary parts. `covp` has a similar relationship to `p.covk` is a matrix containing the variances of the elements of `k`.

You can access the remaining LTI properties of `sys` with `get` or by direct referencing, for example,

```sys.Ts sys.inputname ```

Examples

Example 1

Given a zero-pole-gain model with two outputs and one input

```H = zpk({[0];[-0.5]},{[0.3];[0.1+i 0.1-i]},[1;2],-1) Zero/pole/gain from input to output... z #1: ------- (z-0.3) 2 (z+0.5) #2: ------------------- (z^2 - 0.2z + 1.01) Sample time: unspecified ```

you can extract the zero/pole/gain data embedded in `H` with

```[z,p,k] = zpkdata(H) z = [ 0] [-0.5000] p = [ 0.3000] [2x1 double] k = 1 2 ```

To access the zeros and poles of the second output channel of `H`, get the content of the second cell in `z` and `p` by typing

```z{2,1} ans = -0.5000 p{2,1} ans = 0.1000+ 1.0000i 0.1000- 1.0000i ```

Example 2

Extract the ZPK matrices and their standard deviations for a 2-input, 1 output identified transfer function.

```load iddata7 ```

transfer function model

`sys1 = tfest(z7, 2, 1, 'InputDelay',[1 0]);`

an equivalent process model

```sys2 = procest(z7, {'P2UZ', 'P2UZ'}, 'InputDelay',[1 0]); 1, p1, k1, ~, dz1, dp1, dk1] = zpkdata(sys1); [z2, p2, k2, ~, dz2, dp2, dk2] = zpkdata(sys2);```

Use `iopzplot` to visualize the pole-zero locations and their covariances

```h = iopzplot(sys1, sys2); showConfidence(h)```

Version History

Introduced before R2006a