资源描述:
《数字信号处理课程实验报告_2》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数字信号处理课程实验报告离散时间信号在MATLAB中的表示一、实验目的1.熟悉MATLAB软件的使用环境2.理解并掌握几种常用序列并用MATLAB表示3.利用MATLAB绘制离散时间信号的结果图二、实验内容及结果1.常用序列的MATLAB实现(1)单位抽样序列冲激序列可通过编写impseq函数实现结果为图1n0=2,n1=1,n2=3.图1单位冲激序列(2)单位阶跃序列在MATLAB中可用n>=0来实现。结果如图2.n0=2,n1=1,n2=6.图2单位阶跃序列(3)复指数序列用MATLAB表示复指数序列χ(n)
2、=e^[j(α+jω)],其中-1,<=n<=10,α=0.4,ω=0.6.结果如图3.图3复指数序列(4)周期序列设x(n),0<=n<=N-1,MATLAB把它扩展成K个周期的周期序列可用xtide(n),运用模运算完成。即完成n1=n+KN,0<=n1<=N-1,K整数,余数n1在0到N-1之间。把这一运算运用到位置向量上,就可实现有限长序列的周期延拓。例如x(n)=[1,2,3,4],将它延拓5个周期。结果如图4.图4周期序列2.序列运算的MATLAB实现(1)序列之和与乘积已知两序列为x1(n)=[1,
3、3,5,7,6,4,2,1],起始位置ns1=-3,x2(n)=[4,0,2,1,-1,3],起始位置ns2=1.求出它们的和ya及乘积ym.结果如图5图5两序列的和与乘积(2)序列的卷积MATLAB提供了内部函数conv来计算两个有限长序列的卷积,需遵照两点,一,它只对有限长序列作卷积;二,不需要输入序列的位置信息,也无法给出输出序列的位置信息,因而需将函数conv加以扩展。求x(n)=[1,2,3,-1,-2],nx=[-1,3]与h(n)=[2,2,1,-1,4,-2],nh=[-3,2]的卷积。结果如图6
4、.图6序列的卷积(3)序列的相关MATLAB中提供了xcorr函数来进行相关计算,rxy=xcorr[x,y]是计算向量x、y之间的互相关,rxx=xcorr[x]则是计算向量x的自相关。并且只能计算有限长序列的互相关或自相关,而不能提供位置或时间信息。计算序列x(n)=[2,1,3,2,1,5,1];y(n)=[2,1,3,4];用卷积代替相关。所得结果如图7.图7两序列的互相关三、实验总结此次实验的主要目的,是让我们熟悉MATLAB的使用环境并能比较熟练的操作,通过这次实验。我对MATLAB的使用有了一定了解
5、,并且在实验过程中有了以下收获:1.在做单位抽样序列实验时,我看到书上所给的程序并不只是单纯的输入。而是应该先用function函数对所需函数定义,保存在一个.m文件中,再通过setpath对这个函数进行调用。如果想使用一个函数,就应先对其进行定义。2.在画冲激序列时我发现常用的plot命令无法画出正确的图,后来看书上的标注才知道plot是画连续曲线的,会自动把各点用直线连接起来;而stem直接画脉冲序列。所以在画单位冲激和阶跃序列时我用的是stem()这样的函数。另外,在画单位阶跃序列时,我发现横轴的范围很小,
6、不能清楚的展现阶跃序列,后来通过查资料书发现还用axis()这个函数,可以用来设置坐标轴范围和可读比例,常用的格式为axis([xminxmaxyminymax]),用来设置横纵坐标的范围。通过它我在输入stem()函数后,又输入axis()函数,就能得到比较好的结果了。1.在输入书上的程序过程中,我也发现了几个在输入程序时应该注意的点,还用在MATLAB中字母的大小写是有区分的,在输入源程序时我就因为将小写字母写成了大写,没有生成结果;2.在输入程序时也不能完全的盲目的照搬书本上的内容,在书上关于卷积的程序中:
7、function[y,ny]=convwthn[x,nx,h,nh]ny1=nx(1)+nh(1);ny2=nx(end)+nh(end);y=conv(x,h);ny=(ny1:ny2);其中定义函数convwthn时应使用圆括号convwthn()而不是方括号,另外最后一句等式ny=(ny1:ny2)不用使用括号,因为它不是函数,去括号改成ny=ny1:ny2即可。还有在求卷积的程序中clc;clearallx=[1,2,3,-1,-2];nx=-1:3h=[2,2,1,-1,4,-2];nh=-3:2[y,
8、ny]=convwthn(x,nx,h,nh)stem(ny,y,'·');xlabel('n');ylabel('y(n)');grid;书上应该是印刷错误,将’.’的符号印成了间隔符号‘·’。