MATALAB信号处理——信号的变换(2)

2-2 离散系统中的Z域描述

        就像我们前面所说的线性时不变离散系统可以用线性常系数差分方程描述。

                                              \sum_{i=0}^{N}a{_{i}}^{}y(n-i)=\sum_{j=0}^{M}b{_{j}}^{}x(n-j)

        对两边同时使用Z变换,得       

                 \sum_{i=0}^{N}a{_{i}}^{}Z^{-i}[Y(z)+\sum_{q=-i}^{-1}y(q)z^{-q}]=\sum_{j=0}^{M}b{_{i}}^{}Z^{-j}[X(z)+\sum_{p=-j}^{-1}y(p)z^{-p}]

        零状态响应时:\sum_{i=0}^{N}a{_{i}}^{}Z^{-i}Y(z)=\sum_{j=0}^{M}b{_{i}}^{}Z^{-j}[X(z)+\sum_{p=-j}^{-1}y(p)z^{-p}],根据激励因果\sum_{i=0}^{N}a{_{i}}^{}Z^{-i}Y(z)=\sum_{j=0}^{M}b{_{i}}^{}Z^{-j}X(z),经过变形Y(z)=X(z)\frac{\sum_{j=0}^{M}b{_{i}}^{}Z^{-j}}{\sum_{i=0}^{N}a{_{i}}^{}Z^{-i}},其中\frac{\sum_{j=0}^{M}b{_{i}}^{}Z^{-j}}{\sum_{i=0}^{N}a{_{i}}^{}Z^{-i}}被称为系统函数,将系统函数因式分解为H(z)=C\frac{\prod_{j=1}^{M}(z-q{_{i}}^{})}{\prod_{i=1}^{N}(z-p{_{i}}^{})},C为常数,q{_{i}}^{}为系统函数的零点,p{_{i}}^{}为系统函数的极点。系统函数的零点和极点分布决定了整个系统的特性,即若系统函数的零点和极点都已知,则系统函数便可以确定下来。零极点分布确定单位样值响应:展成部分分式,则每一个极点决定一项对应的时间序列,即决定特性,零点影响各个模态在响应中的比例,即决定幅值A。

    1)离散系统函数频域分析

        离散系统的函数响应H(e^{jw})对于为,喔、某因果稳定离散系统,如果激励序列为正弦序列                                                    x(n) = Asin(w{_{0}}^{}n)u(n)                                                                  则系统的稳态响应为:

                                    y{_{ss}}^{}(n)=A|H(e^{jw})|sin[wn+\varphi (w)]u(n)

定义离散系统的频率响应为:

                                    H(e^{jw})=H(z)|{_{z=e^{jw}}}^{}=|H(e^{jw})|e^{j\varphi (w)}

就像上面说的一样,|H(e^{jw})|为离散系统的幅值特性,\varphi(w)为离散系统的相频特相,H(e^{jw})是以2π为周期的周期函数,类比与三角函数,只要知道|w|<π的函数情况,我们就可以知道函数的整体情况。

       利用几何矢量来求解离散系统的频率响应,设e^{jw}-p{_{i}}^{}=A{_{i}}^{}e{_{}}^{j\theta {_{i}}^{}}e^{jw}-q{_{j}}^{}=B{_{j}}^{}e{_{}}^{j\psi {_{j}}^{}},求得离散系统的频率响应为H(e^{jw})=\frac{\prod_{j=1}^{M}B{_{j}}^{}e{_{}}^{j\psi {_{j}}^{}}}{\prod_{i=1}^{N}A{_{i}}^{}e{_{}}^{j\theta {_{i}}^{}}},化简后得到系统的幅频特性为|H(e^{jw})|=\frac{\prod_{j=1}^{M}B{_{j}}^{}}{\prod_{i=1}^{N}A{_{i}}^{}}\varphi (w)=\sum_{j=1}^{M}\psi {_{j}}^{}-\sum_{i=1}^{N}\theta{_{i}}^{}

        MATLAB提供了freqz函数来求解离散时间系统频率响应特性,使用方法为                                                                             [H,w] = freqz(B,A,N,'whole')

其中,B和A分别表示H(z)的分子和分母多项式的系数向量;N为正整数,默认为512;返回值w包含[0,π]范围内的N个频率等分点;返回值H是离散时间系统频率响应在0-π范围内N的频率处对应的值。

例1-1 绘制H(z)=\frac{z-1.3}{z}的频率响应曲线。

clear all
B = [1 -1.3];
A = [1 0];
[H,w] = freqz(B,A,400,'whole');
Hf = abs(H);
Hx = angle(H);
subplot(121);
plot(w,Hf)
title('离散时间系统幅频特性曲线')
ylabel('幅度')
xlabel('频率')
grid on;
subplot(122)
plot(w,Hx)
title('离散时间系统相频特性曲线')
ylabel('幅度')
xlabel('频率')
grid on;

       

例1-2 绘制离散时间系统的幅频响应和相频响应

clear all
w = (-4*pi:0.001:4*pi)+eps;
X = 1./(1-0.6*exp(-j*w));
subplot(211);
plot(w/pi,abs(X),'LineWidth',2);
ylabel('|H(e^j^\omega)|');
title('幅频响应')
axis([-3.2 3.2 0.5 2.5])
grid on;
subplot(212);
plot(w/pi,angle(X),'LineWidth',2);
ylabel('\omega/\pi');
title('相频响应')
axis([-3.2 3.2 -0.8 0.8])
grid on;

  2)离散时间系统函数的零点分析

       离散时间系统函数为\frac{\sum_{j=0}^{M}b{_{i}}^{}Z^{-j}}{\sum_{i=0}^{N}a{_{i}}^{}Z^{-i}},对于这个函数,MATALB提供了roots函数和tf2zp函数来求出零点和极点

       roots函数的使用方法为r = roots(p),其中输入值p 是一个包含 n+1 多项式系数的向量,以降幂顺序排列,0 系数表示方程中不存在的中间幂。

       tf2zp函数的使用方法为[z,p,k] = tf2zp(b,a),b和a分别为分子和分母多项式的系数向量,求出下面变形的未知系数:H(z)=k\frac{(z-z{_{1}}^{})(z-z{_{2}}^{})\cdot \cdot \cdot (z-z{_{m}}^{})}{(z-p{_{1}}^{})(z-p{_{1}}^{})\cdot \cdot \cdot (z-p{_{n}}^{})},matlab还提供了zplane函数来绘制H(z)的零点极点图,使用方法为zplane(z,p)

   3)离散时间系统差分函数求解

  连续函数f(t)经过采样后,获得采样函数f(kT),一阶向前和向后差分形式分别为:

                  \triangle f(k)=f(k+1)-f(k)

                  \triangledown f(k)=f(k)-f(k-1)

        二阶向前和向后的差分形式分别为:

                              \triangle ^{2}f(k) = \triangle f(k+1)=f(k+2)-2f(k+1)+f(k)

                                \triangledown ^{2}f(k)=\triangledown [\triangle f(k)]=f(k)-2f(k-1)+f(k-2)

       根据上式可以推导向前和向后的n阶差分为:

                                        \triangle ^{n}f(k)=\triangle^{n-1}f(k+1)-\triangle^{n-1}f(k)

                                         \triangledown ^{n}f(k)=\triangledown^{n-1}f(k)-\triangledown^{n-1}f(k-1) 

       连续系统的时间序列方程为:

                                       d^{2}c(t)/dt^{2}+adc(t)/dt+bc(t)=kr(t)

      上式中的微分用差分代替,则有:

                                 d^{2}c(t)/dt^{2}=\triangle ^{2}c(t)=c(k+2)-2c(k+1)+c(k) 

                                                dc(t)/dt=c(k+1)-c(k)

      推导到离散时间系统,c(k)代替c(t),r(k)代替r(t),并整理,则有:

                              c(k+2)+(a-2)c(k+1)+(1-a+b)c(k)=kr(k)

      由此可以推出一般离散系统的差分方程:

c(k+n)+a_{1}c(k+n-1)+a_{2}c(k+n-2)+\cdot \cdot\cdot+a_{n}c(k)=b_{0}r(k+m)+b_{1}r(k+m-1)+\cdot\cdot\cdot+b_{m}r(k)

差分方程的解也分为通解与特解,通解与方程的初态有关,特解与外部输入有关。

例3-1求解如下差分方程:y(n)-0.5y(n-1)-0.45y(n-2)=0.55x(n)+0.5x(n-1)-x(n-2),其中,x(n)=0.7^{n}\varepsilon (n),初始状态y(-1)=1,y(-2)=2,x(-1)=2,x(-2)=3

clear all
num = [0.55 0.5 -1];
den = [1 -0.5 -0.45];
x0 = [2 3];
y0 = [1 2];
N = 50;
n = [0:N-1];
x = 0.7.^n;
Zi = filtic(num,den,y0,x0);
[y,Zf] = filter(num,den,x,Zi);
plot(n,x,'r-',n,y,'b--');
title('响应');
ylabel('x(n)-y(n)');
xlabel('n');
legend('输入x','输出y',1);
grid;

 参考资料——《MATLAB信号处理》沈再阳

                        MATLAB帮助文档

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值