我有这个功能:
x [n] =(1/2)^ n * u [n] +(-1/3)^ n * u [n]
我需要使用MATLAB做两件事:
找到 z -transform。
绘制它的极点和零点。
我使用以下代码:
syms n;
f = (1/2)^n + (-1/3)^n;
F = ztrans(f);
我在F
变量中得到了 z - 变换,但我看不出如何创建它的零极点图。我使用的是内置函数pzmap
(pzmap(F);
),但它似乎不适用于ztrans(f)
的输出。
我做错了什么?我是否需要将 z -transform更改为其他形式,如传递函数模型或零极点增益模型?如果是这样,有人可以解释如何使用ztrans(f)
<?p>的输出来完成
答案 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)
会产生这样的情节: