Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

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

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)