求Z逆变换的常用方法有三种:围线积分法(留数法)、部分分式展开法和幂级数展开法(长除法)。
理论公式推导参考教材,下面就matlab内置函数进行讨论:
对拉普拉斯算子s的,适用于连续系统;
对Z变换算子z的,适用于离散系统;
[r,p,k] = residuez(b,a)
inputs:
b:按的升幂排列的多项式的分子;
a:按的升幂排列的多项式的分母;
outputs:
r:对应与根向量中各个根的留数向量;
p:分母的根向量(即X(z)的极点向量);
k:无穷多项式系数向量;
计算由下列 传递函数描述的三阶IIR低通滤波器对应的部分分数展开式:
b0 = 0.05634; b1 = [1 1]; b2 = [1 -1.0166 1]; a1 = [1 -0.683]; a2 = [1 -1.4461 0.7957]; b = b0*conv(b1,b2); a = conv(a1,a2); [r,p,k] = residuez(b,a) r = -0.1153 - 0.0182i -0.1153 + 0.0182i 0.3905 + 0.0000i p = 0.7230 + 0.5224i 0.7230 - 0.5224i 0.6830 + 0.0000i k = -0.1037
画出传递函数的极点和零点 ;
zplane(b,a) hold on plot(p,'^r') hold off再次使用残差来重建传递函数
[bn,an] = residuez(r,p,k) bn = 0.0563 -0.0009 -0.0009 0.0563 an = 1.0000 -2.1291 1.7834 -0.5435Syntax iztrans(F); iztrans(F,transVar); iztrans(F,var,transVar);
下面 计算2*z/(z-2)^2的z逆变换(默认情况下,逆变换是以n为单位的) 以下例子计算得到的结果需加上u(n)
syms z F = 2*z/(z-2)^2; iztrans(F) ans = 2^n + 2^n*(n - 1) syms z n; X=z/(z-0.5); x=iztrans(X,z,n) x = (1/2)^n syms z n; X=(z^2)/(z-1)^2; x=iztrans(X,z,n) x = n + 1