This is machine translation

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

Note: This page has been translated by MathWorks. Please click here
To view all translated materials including this page, select Japan 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,



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...
 #1:  -------
           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]
p = 
    [    0.3000]
    [2x1 double]
k =

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

ans =
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);

See Also

| | |

Introduced before R2006a

Was this topic helpful?