数字信号处理实验报告实验一信号(模拟、数字)的输入输出实验(常见离散信号产生和实现)一、实验目的1.加深对常用离散信号的理解;2.掌握matlab中一些基本函数的建立方法。二、实验原理1.单位抽样序列01)(n00nn在MATLAB中可以利用zeros()函数实现。;1)1();,1(xNzerosx如果)(n在时间轴上延迟了k个单位,得到)(kn即:01)(kn0nkn2.单位阶跃序列01)(nu00nn在MATLAB中可以利用ones()函数实现。x=ones(1,N)3.正弦序列)/2sin()(FsfnAnx在MATLAB中,n=0:N-1;x=A*sin(2*pi*f*n/Fs+fai)4.复指数序列njernx)(在MATLAB中,n=0:N-1;x=r*exp(j*w*n)5.指数序列nanx)(在MATLAB中,n=0:N-1;x=a.^n三、实验内容实现和图形生成1.五种基本函数的生成程序如下:(1)单位抽样序列%单位抽样序列和延时的单位抽样序列n=0:10;x1=[1zeros(1,10)];x2=[zeros(1,5)1zeros(1,5)];subplot(1,2,1);stem(n,x1);xlabel('时间序列n');ylabel('振幅');title('单位抽样序列x1');subplot(1,2,2);stem(n,x2);xlabel('时间序列n');ylabel('振幅');title('延时了5的单位抽样序列');0510-1-0.500.511.52时间序列n振幅单位抽样序列x10510-1-0.500.511.52时间序列n振幅延时了5的单位抽样序列(2)单位阶跃序列n=0:10;u=[ones(1,11)];stem(n,u);xlabel('时间序列n');ylabel('振幅');title('单位阶跃序列');所得的图形如下所示:01234567891000.10.20.30.40.50.60.70.80.91时间序列n振幅单位阶跃序列(3)正弦函数n=1:30;x=2*sin(pi*n/6+pi/3);stem(n,x);xlabel('时间序列n');ylabel('振幅');title('正弦函数序列x=2*sin(pi*n/6+pi/3)');051015202530-2-1.5-1-0.500.511.52时间序列n振幅正弦函数序列x=2*sin(pi*n/6+pi/3)(4)复指数序列n=1:30;x=2*exp(j*3*n);stem(n,x);xlabel('时间序列n');ylabel('振幅');title('复指数序列x=2*exp(j*3*n)');图形如下:051015202530-2-1.5-1-0.500.511.52时间序列n振幅复指数序列x=2*exp(j*3*n)(5)指数序列n=1:30;x=1.2.^n;stem(n,x);xlabel('时间序列n');ylabel('振幅');title('指数序列x=1.2.^n');051015202530050100150200250时间序列n振幅指数序列x=1.2.n2.绘出信号)1.0*2sin(5.1)(nnx的频率是多少?周期是多少?产生一个数字频率为0.9的正弦序列,并显示该信号,说明其周期?程序如下:n=0:40;x1=1.5*sin(2*pi*0.1*n);x2=sin(0.9*n);subplot(1,2,1);stem(n,x1);xlabel('时间序列n');ylabel('振幅');title('正弦序列x1=1.5*sin(2*pi*0.1*n)');subplot(1,2,2);stem(n,x2);xlabel('时间序列n');ylabel('振幅');title('正弦序列x2=sin(0.9*n)');运行结果如下:010203040-1.5-1-0.500.511.5时间序列n振幅正弦序列x1=1.5*sin(2*pi*0.1*n)010203040-1-0.8-0.6-0.4-0.200.20.40.60.81时间序列n振幅正弦序列x2=sin(0.9*n)由上图看出:x1=1.5*sin(2*pi*0.1*n)的周期是10,而x2=sin(0.9*n)是非周期的。理论计算中对第一个,N=2*pi/(0.1*pi)=10,第二个0.9不是pi的倍数,所以不是周期的。因此可以看出,实验结果和理论相符。3.x(n)=[2,3,1,1,2,-1,0,3],-2≤n≤5;h(n)=[2,4,1,-2,0,-1],-3≤n≤2,手工计算和MATLAB计算卷积y(n)=x(n)*h(n)。4.如果)(nx、)(nh的起点不为0,则采用conv_m计算卷积;编写conv_m函数:function[y,ny]=conv_m(x,nx,h,nh)nyb=nx(1)+nh(1);nye=nx(length(x))+nh(length(h));ny=[nyb:nye];y=conv(x,h);%MATLAB自带的函数在命令窗口输入:x=[2,3,1,1,2,-1,0,3];nx=[-2:5];h=[2,4,1,-2,0,-1];nh=[-3:2];[y,ny]=conv_m(x,nx,h,nh)stem(ny,y,'.');xlabel('时间序号n');title('卷积和y(n)=x(n)*h(n)');-6-4-202468-10-505101520时间序号n卷积和y(n)=x(n)*h(n)附:手工计算根据不进位卷积运算得:y(n)=[4,14,16,5,3,3,-7,0,13,1,-5,0,-3],-5≤n≤7,图形如下四、心得体会通过此次试验,我深切体会到matlab在数字信号处理中应用广泛,试验中也掌握了matlab中一些基本函数的建立方法,加深了对常用离散信号的理解,同时课本上抽象的知识也变得更加形象化,枯燥的理论知识瞬间变得生动有趣起来。实验二FFT频谱分析及应用一、实验目的1.通过实验加深对FFT的理解;2.熟悉...