找到z变换并用MATLAB绘制它的零极点映射

时间:2015-12-16 17:45:03

标签: matlab plot

我有这个功能:

x [n] =(1/2)^ n * u [n] +(-1/3)^ n * u [n]

我需要使用MATLAB做两件事:

  1. 找到 z -transform。

  2. 绘制它的极点和零点。

  3. 我使用以下代码:

    syms n;
    f = (1/2)^n + (-1/3)^n;
    F = ztrans(f);
    

    我在F变量中得到了 z - 变换,但我看不出如何创建它的零极点图。我使用的是内置函数pzmappzmap(F);),但它似乎不适用于ztrans(f)的输出。

    我做错了什么?我是否需要将 z -transform更改为其他形式,如传递函数模型或零极点增益模型?如果是这样,有人可以解释如何使用ztrans(f) <?p>的输出来完成

1 个答案:

答案 0 :(得分:1)

您提供的第一部分代码使用符号数学来求解 z -transform。您需要将输出转换为控制系统工具箱支持的discrete-time model

syms n;
f = (1/2)^n + (-1/3)^n;
F = ztrans(f)

返回z/(z - 1/2) + z/(z + 1/3)。您可以选择使用collect转换此

F2 = collect(F)

(12*z^2 - z)/(6*z^2 - z - 1)。然后,您需要在分子和分母中找到多项式的系数,并在特定采样周期内创建一个tf的离散时间传递函数对象:

[num,den] = numden(F2);
Ts = 0.1; % Sampling period
H = tf(sym2poly(num),sym2poly(den),Ts)

然后pzmap(H)会产生这样的情节:

Pole-Zero Map plot