## Documentation Center |

Access zero-pole-gain data

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

`[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

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) Sampling 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

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)

Was this topic helpful?