信号与系统时域及频域响应分析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1《数字信号处理》实验报告实验一信号与系统时域及频域响应分析1.1实验目的:学会运用MATLAB求解离散时间系统的零状态响应;学会运用MATLAB求解离散时间系统的单位取样响应;学会运用MATLAB求解离散时间系统的卷积和;学会运用MATLAB求解离散时间系统的频率响应。21.2实例分析:1.2.1离散时间系统的响应离散时间LTI系统可用线性常系数差分方程来描述,即MjjNiijnxbinya00)()((1-1)其中,ia(0i,1,…,N)和jb(0j,1,…,M)为实常数。MATLAB中函数filter可对式(1-1)的差分方程在指定时间范围内的输入序列所产生的响应进行求解。函数filter的语句格式为y=filter(b,a,x)其中,x为输入的离散序列;y为输出的离散序列;y的长度与x的长度一样;b与a分别为差分方程右端与左端的系数向量。【实例1-1】已知某LTI系统的差分方程为)1(2)()2(2)1(4)(3nxnxnynyny试用MATLAB命令绘出当激励信号为)()2/1()(nunxn时,该系统的零状态响应。解:MATLAB源程序为a=[3-42];b=[12];n=0:30;x=(1/2).^n;y=filter(b,a,x);stem(n,y,'fill'),gridonxlabel('n'),title('系统响应y(n)')程序运行结果如图1-1所示。3图1-11.2.2离散时间系统的单位取样响应系统的单位取样响应定义为系统在)(n激励下系统的零状态响应,用)(nh表示。MATLAB求解单位取样响应可利用函数filter,并将激励设为前面所定义的impDT函数。例如,求解实例1-1中系统的单位取样响应时,MATLAB源程序为a=[3-42];b=[12];n=0:30;x=impDT(n);h=filter(b,a,x);stem(n,h,'fill'),gridon4xlabel('n'),title('系统单位取样响应h(n)')程序运行结果如图1-2所示。图1-2MATLAB另一种求单位取样响应的方法是利用控制系统工具箱提供的函数impz来实现。impz函数的常用语句格式为impz(b,a,N)其中,参数N通常为正整数,代表计算单位取样响应的样值个数。【实例1-2】已知某LTI系统的差分方程为)1(2)()2(2)1(4)(3nxnxnynyny利用MATLAB的impz函数绘出该系统的单位取样响应。解:MATLAB源程序为a=[3-42];b=[12];n=0:30;5impz(b,a,30),gridontitle('系统单位取样响应h(n)')程序运行结果如图1-3所示图1-31.2.3离散时间信号的卷积和运算由于系统的零状态响应是激励与系统的单位取样响应的卷积,因此卷积运算在离散时间信号处理领域被广泛应用。离散时间信号的卷积定义为mmnhmxnhnxny)()()(*)()((1-2)可见,离散时间信号的卷积运算是求和运算,因而常称为“卷积和”。MATLAB求离散时间信号卷积和的命令为conv,其语句格式为y=conv(x,h)6其中,x与h表示离散时间信号值的向量;y为卷积结果。用MATLAB进行卷积和运算时,无法实现无限的累加,只能计算时限信号的卷积。例如,利用MALAB的conv命令求两个长为4的矩形序列的卷积和,即)]4()([*)]4()([)(nunununung,其结果应是长为7(4+4-1=7)的三角序列。用向量[1111]表示矩形序列,MATLAB源程序为x1=[1111];x2=[1111];g=conv(x1,x2)运行结果:如果要绘出图形来,则利用stem命令,即n=1:7;stem(n,g,'fill'),gridon,xlabel('n')程序运行结果如图1-4所示。7图1-4对于给定函数的卷积和,我们应计算卷积结果的起始点及其长度。两个时限序列的卷积和长度一般等于两个序列长度的和减1。【实例1-3】已知某系统的单位取样响应为88.0nununhn,试用MATLAB求当激励信号为)4()()(nununx时,系统的零状态响应。解:MATLAB中可通过卷积求解零状态响应,即)(*)(nhnx。由题意可知,描述)(nh向量的长度至少为8,描述)(nx向量的长度至少为4,因此为了图形完整美观,我们将)(nh向量和)(nx向量加上一些附加的零值。MATLAB源程序为nx=-1:5;%x(n)ÏòÁ¿ÏÔʾ·¶Î§(Ìí¼ÓÁ˸½¼ÓµÄÁãÖµ)nh=-2:10;%h(n)ÏòÁ¿ÏÔʾ·¶Î§(Ìí¼ÓÁ˸½¼ÓµÄÁãÖµ)8x=uDT(nx)-uDT(nx-4);h=0.8.^nh.*(uDT(nh)-uDT(nh-8));y=conv(x,h);ny1=nx(1)+nh(1);ny=ny1+(0:(length(nx)+length(nh)-2));subplot(311)stem(nx,x,'fill'),gridonxlabel('n'),title('x(n)')axis([-41603])subplot(312)stem(nh,h','fill'),gridonxlabel('n'),title('h(n)')axis([-41603])subplot(313)stem(ny,y,'fill'),gridonxlabel('n'),title('y(n)=x(n)*h(n)')axis([-41603])程序运行结果如图1-5所示。9图1-51.2.4离散时间系统的频率响应若系统函数为11(0)(1)()()(0)(1)()MNbbzbMzHzaazaNz利用[H,w]=freqz(b,a,N)求取系统频率响应,H为频率响应,w为0到pi的均分N点。【实例1-4】已知某离散系统的系统函数为H(z)=[1-1.8z-1-1.44z-2+0.64z-3]/[1-1.64853z-1+1.03882z-2-0.288z-3]10求系统的零极点及频率响应,并画图。解:运行结果:图1-611图1-71.3编程练习1.试用MATLAB命令求解以下离散时间系统的单位取样响应,判断系统的稳定性,并画图。(1))1()()2()1(4)(3nxnxnynynya=[342];b=[11];n=0:30;x=impDT(n);h=filter(b,a,x);stem(n,h,'fill'),gridon12xlabel('n'),title('h(n)的单位取样响应')图1-(1)(2))()2(10)1(6)(25nxnynynya=[5/2610];b=1;n=0:30;x=impDT(n);h=filter(b,a,x);stem(n,h,'fill'),gridonxlabel('n'),title('h(n)的单位取样响应')13练习图1-(2)2.已知某系统的单位取样响应为10)87(nununhn,试用MATLAB求当激励信号为)5()()(nununx时,系统的零状态响应,并画图。nx=-1:5;nh=-10:10;x=uDT(nx)-uDT(nx-4);h=(7/8).^nh.*(uDT(nh)-uDT(nh-10)):ny=y1+(0:length(nh)+length(nx)-2);y=conv(x,h);stem(ny,y);14练习图1-23.已知某离散系统的系统函数为H(z)=[z-1+z-2]/[1-0.9z-1+0.81z-2],试用MATLAB求系统的零极点及频率响应,并画图。b=[1,1];a=[1,-0.9,0.8];rp=roots(a)rz=roots(b)[H,w]=freqz(b,a,1024,'whole');magX=abs(H);angX=angle(H);figure(1)zplane(b,a)figure(2)15subplot(2,1,1);plot(w/pi,magX);gridxlabel('');tltle('幅度部分');ylabel('幅值')subplot(2,1,2);pilt(w/pi,angX);gridxlabel('\omega/\pi为单位的频率');tltle('相角部分');ylabel('相角(幅度)')练习图1-3161.4实验心得:通过这次试验这次实验使我进一步熟悉了MATLAB软件的使用。让我对matlab的编程语言有了更加深入的了解。在实验的过程中,通过对每一个程序的编程,更深刻的认识到,编程语言的严谨性,所有的代码必须准确无误,哪怕一个标点符号都不可以出现错误,尤其是中英文符号,必须使用英文符号。Matlab程序的调用也是一个难点,如果调用程序不对,程序就不能运行,得不到想要的结果,还有matlab函数的格式要求,每一个函数都有相应的格式要求,并且在调用的时候函数名必须与函数文件名相同才能调用。最后,感谢老师的耐心指导。17

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功