2015年西南交通大学数字信号处理实验1

更新时间:2023-11-25 17:18:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数字信号处理MATLAB上机实验

第一章

14(2)已知差分方程为y(n)=1/5(x(n)+x(n-1)+x(n-2)+x(n-3)+x(n-4)),输入信号如下图所示,试求出y(n).

实验目的:学习MATLAB的简单使用,学习如何使用MATLAB绘制信号的波形图。

实验任务:学会调用filter、filtic函数求解差分方程,掌握差分方程的解法以及波形图的绘制方法。

实验思路:

实验代码:

ys=1;

xn=[ones(1,12),[2,1,1,0.5,1,1,1,1.5],ones(1,12)]; B=[0.2,0.2,0.2,0.2,0.2];A=1; xi=filtic(B,A,ys); yn=filter(B,A,xn,xi); n=0:length(yn)-1;

subplot(1,1,1);stem(n,yn,'.')

title('(第14题)');xlabel('n');ylabel('y(n)')

运行结果:

实验总结:掌握了序列差分方程的求解方法,感受到了MATLAB的强大之处。了解了使用MATLAB解决数字信号问题的基本形式。

16(1)已知差分方程y(n)=0.6y(n-1)-0.08y(n-2)+x(n),求出系统的单位脉冲响应和单位阶跃响应。

实验目的:掌握用MATLAB求解差分方程以及MATLAB对函数的表示。

实验任务:用MATLAB表示冲击函数和阶跃函数,并求出题设差分方程对应的两种响应的波形。

实验思路:

实验代码: 单位脉冲响应:

ys=1;

xn=[1,zeros(1,30)]; B=1;

A=[1,-0.6,0.08]; xi=filtic(B,A,ys); yn=filter(B,A,xn,xi); n=0:length(yn)-1;

subplot(1,1,1);stem(n,yn,'.')

title('(16-1)');xlabel('n');ylabel('h(n)')

单位阶跃响应: ys=1;

xn=[ones(1,30)]; B=1;

A=[1,-0.6,0.08]; xi=filtic(B,A,ys); yn=filter(B,A,xn,xi); n=0:length(yn)-1;

subplot(1,1,1);stem(n,yn,'.')

title('(16-2)');xlabel('n');ylabel('u(n)')

运行结果: 单位脉冲响应

单位阶跃响应

实验总结:掌握了冲激函数和阶跃函数的波形求解方法,对MATLAB的使用更加熟练。

第二章

24(2)已知差分方程y(n)=0.9y(n-1)+x(n)+0.9x(n-1),试定性画出其频率响应函数的幅频特性曲线;

(3)设输入x(n)=exp(jwn),求输出y(n)。

实验目的:学会利用MATLAB求频率响应函数的幅频特性曲线,学习指数函数的表示以及虚数单位j的应用。

实验任务:根据差分方程写出频率响应函数,从而根据频率响应函数运用MATLAB求出它的幅频特性曲线;由题设x(n)和差分方程求出y(n)。

实验思路: 幅频特性:

求解y(n)

实验代码:

求幅频特性曲线:

B=[1,0.9];A=[1,-0.9]; [Hk,w]=freqz(B,A,'whole'); subplot(1,1,1);plot(w/pi,abs(Hk));

xlabel('\\omega/\\pi');axis([0,2,0,20]);title('24-2幅频特性曲线')

求y(n): ys=1; n=0:1:60;

xn=exp(i*2*pi*n); B=[1,0.9];A=[1,-0.9]; xi=filtic(B,A,ys); yn=filter(B,A,xn,xi); n=0:length(yn)-1;

subplot(1,1,1);stem(n,yn,'.')

title('(24-3)');xlabel('n');ylabel('y(n)')

运行结果: 幅频特性曲线

求解y(n)

实验总结:掌握了求解更为复杂的差分方程,能够求解幅频响应以及利用输入信号求解输出信号,为以后的学习打下了见识的基础。

31 已知系统函数H(z)=(z^2+5z-50)/(2*z^4-3.98*z^3+1.17*z^2+2.3418z-1.5147) (1)画出零极点图,并判断系统是否稳定; (2)输入单位阶跃序列u(n)检查系统是否稳定。

实验目的:学会用MATLAB画零极点图,并根据零极点图判断系统是否稳定;学习用单位阶跃序列检查系统是否稳定。

实验任务:由题设差分方程,运用MATLAB求出零极点图,当输入为单位阶跃序列时,求出y(n),并检查系统的稳定性。

实验思路: 1.画零极点图

2.求解y(n)

实验代码: 画零极点图

B=[1,5,-50];A=[2,-2.98,0.17,2.3418,-1.5147]; subplot(1,1,1);zplane(B,A);title('31-1零极点分布')

求解y(n)

ys=1;

xn=ones(1,700);

B=[0,0,1,5,-50];A=[2,-2.98,0.17,2.3418,-1.514]; xi=filtic(B,A,ys); yn=filter(B,A,xn,xi); n=0:length(yn)-1;

subplot(1,1,1);stem(n,yn,'.')

title('31-2');xlabel('n');ylabel('y(n)')

运行结果: 零极点图

输出波形y(n):

结果分析:从两个图中都可以看出,系统是稳定的。

第一个图中,极点都在单位圆内,故系统稳定;

第二个图中,当n趋于∞时,y(n)趋于一个稳定的值,所以系统是稳定的。

实验总结:利用MATLAB判断了一个比较系统的稳定性,由此体现出来MATLAB的强大作用,同时为以后处理系统函数提供了一个有效的手段。

本文来源:https://www.bwwdw.com/article/r0kt.html

Top