精品资料(2021-2022年收藏的)武汉工程大学matlab实验二离散时间信号的分析实验.docx

上传人:时光煮雨 文档编号:14862025 上传时间:2022-02-22 格式:DOCX 页数:22 大小:295.50KB
返回 下载 相关 举报
精品资料(2021-2022年收藏的)武汉工程大学matlab实验二离散时间信号的分析实验.docx_第1页
第1页 / 共22页
精品资料(2021-2022年收藏的)武汉工程大学matlab实验二离散时间信号的分析实验.docx_第2页
第2页 / 共22页
精品资料(2021-2022年收藏的)武汉工程大学matlab实验二离散时间信号的分析实验.docx_第3页
第3页 / 共22页
精品资料(2021-2022年收藏的)武汉工程大学matlab实验二离散时间信号的分析实验.docx_第4页
第4页 / 共22页
精品资料(2021-2022年收藏的)武汉工程大学matlab实验二离散时间信号的分析实验.docx_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《精品资料(2021-2022年收藏的)武汉工程大学matlab实验二离散时间信号的分析实验.docx》由会员分享,可在线阅读,更多相关《精品资料(2021-2022年收藏的)武汉工程大学matlab实验二离散时间信号的分析实验.docx(22页珍藏版)》请在三一文库上搜索。

1、武汉工程大学数字信号处理实验报告二 专业班级: 14级通信03班 学生姓名: 秦重双 学 号: 1404201114 实验时间: 2017年5月3日 实验地点: 4B315 指导老师: 杨述斌实验一 离散时间信号的分析实验一、实验目的1 认识常用的各种信号,理解其数学表达式和波形表示。2 掌握在计算机中生成及绘制数值信号波形的方法。3 掌握序列的简单运算及计算机实现与作用。4 理解离散时间傅里叶变换、Z变换及它们的性质和信号的频域特性。2、 实验设备 计算机,MATLAB语言环境。3、 实验基础理论 1、序列的相关概念 离散时间信号用一个称为样本的数字序列来表示。一般用xn表示,其中自变量n的

2、取值范围是到之间的整数。为了表示方便,序列通常直接用xn表示。 离散时间信号可以是一个有限长序列,也可以是一个无限长序列。有限长(也称为有限时宽)序列仅定义在有限的时间间隔中:N1 N2 +.有限长序列的长度或时宽为N=N1 -N2+1。 满足xn+kN=xn(对于所有n)的序列称为周期为N的周期序列,其中N取任意正整数;k取任意整数; 2、常见序列 常见序列有单位取样值信号、单位阶跃序列、矩形序列、斜变序列、单边指数序列、正弦序列、复指数序列等。 3、序列的基本运算 序列的基本运算有加法、乘法、倒置(反转)、移位、尺度变换、卷积等。 4、离散傅里叶变换的相关概念 5、Z变换的相关概念4 实验

3、内容与步骤 1、知识准备 认真复习以上基础理论,理解本实验所用到的实验原理。 2、离散时间信号(序列)的产生 利用MATLAB语言编程和绘制单位样值信号、单位阶跃序列、指数序列、正弦序列及随机离散信号的波形,以加深对离散信号时域表示的理解。1 单位取样值信号Matlab程序x=0;y=1;stem(x,y);title(单位样值);axis(-2,2,0,1);2 单位阶跃序列Matlab程序n0=0;n1=-5;n2=5;n=n1:n2;x=(n-n0)=0;stem(n,x);xlabel(n);ylabel(x(n);title(单位阶跃序列); 3 指数序列、正弦序列Matlab程序n

4、=0:10;x=(1/3).n;stem(n,x);xlabel(n);ylabel(x(n);title(指数序列); n=-20:20;x=2*sin(0.5.*n);stem(n,x);xlabel(n);ylabel(x(n);axis(-20,20,-3,3);title(正弦序列); 4 随机离散信号矩形序列Matlab程序n=1:10;x=rand(1,10);stem(n,x);xlabel(n);ylabel(x(n);title(随机序列); 3、序列的运算 数字信号处理的目的,就是从一个或几个给定的离散时间信号中产生一个具有所需性质的信号。处理算法由加法、乘法、倒置(反转

5、)、移位、尺度变换、卷积等基本运算组合构成。此部分实验将通过几个简单常见的例子说明这些基本运算的实际运用,以便进一步理解序列的简单运算及计算机实现与作用。 (1)信号平滑 利用MATLAB语言编程实现信号平滑运算。信号平滑是数字信号处理应用中的一个常见的算法,以虑出被加性噪声污染的信号中的噪声。假定信号sn被噪声dn所污染,得到了一个含有加性噪声的信号xn=sn+dn。要得到无污染的信号,可用简单的信号平滑即信号的加法实现。例如,采用三点(可选,以信号特点来定)平滑来实现。 yn=(xn-1+xn+xn+1)/3由此可以理解平滑滤波的处理方法。Matlab程序r=65;d=0.8*(rand(

6、r,1)-0.5);m=0:r-1;s=2*m.*(0.9.m);x=s+d;subplot(2,1,1);plot(m,d,r-,m,s,g-,m,x,b-.);xlabel(n);ylabel(振幅);legend(dn,sn,xn);x1=0 0 x;x2=0 x 0;x3=x 0 0;y=(x1+x2+x3)/3;subplot(2,1,2);plot(m,y(2:r+1),r-,m,s,g-);legand(yn,sn);xlabel(n);ylabel(振幅); (2)调制信号的产生利用MATLAB语言编程实现信号的调制。调制信号是工程应用中常用的一类信号,调制信号的产生可以通过序

7、列的乘法运算得到。例如,用低频调制信号xLn=cos(wln)来调制高频正弦信号xHn=cos(wHn),就可得到振幅调制信号yn。 yn=A(1+m*xLn)xHn=A(1+mcos(wLn)cos(wHn)其中m称为调制指数,用来确保(1+m*xLn)在所有可能的n的情况下m都是正数。以上式进行编程即可实现调制的目的。Matlab程序Fm=10;Fc=100;Fs=500;k=0:199;t=k/Fs;x=sin(2*pi*Fm*t);y=x.*cos(2*pi*Fc*t);X=fft(x,256);Y=fft(y,256);subplot(2,2,1);plot(x);xlabel(t(

8、s);ylabel(x);title(原信号);subplot(2,2,2);plot(X);plot(-128:127,fftshift(abs(X);xlabel(w);ylabel(X(jw);title(原信号频谱);subplot(2,2,3);plot(y);xlabel(t(s);ylabel(y);title(调制信号);subplot(2,2,4);plot(Y);plot(-128:127,fftshift(abs(Y);xlabel(w);ylabel(Y(jw);title(调制信号频谱);(3) 卷积的计算 用MATLAB语言编程可实现信号卷积运算。卷积是数字信号处理

9、中非常重要的一个运算,用卷积可以计算一个序列通过离散系统后的响应信息。如可以编程实现9点对7点(序列长度可以自己设定)的序列卷积运算。Matlab程序x=0 0.5 1 1.5 0;nx=0:4;h=1 1 1 0 0;nh=0:4;y,ny=conv_m(x,nx,h,nh);subplot(2,2,1);stem(nx,x);title(序列x);xlabel(n);ylabel(x(n);subplot(2,2,2);stem(nh,h);title(序列h);xlabel(n);ylabel(h(n);subplot(2,2,3);stem(ny,y);title(两序列卷积);xla

10、bel(n);ylabel(y(n);conv_m函数程序functiony,ny=conv_m(x,nx,h,nh)%信号处理的卷积程序%y,ny=conv_m(x,nx,h,nh)%y=卷积结果%ny=y的基底(support);%nx=x的基底;%h=基底nh上的第二个信号%nh=h的基底nyb=nx(1)+nh(1);nye=nx(length(x)+nh(length(h);ny=nyb:nye;y=conv(x,h);end(4) 序列的离散傅里叶变换,Z变换及信号频域特性 l 用MATLAB语言编程实现信号离散傅里叶的正反变换。Matlab程序xn=1,1,1,1;N=4;k=d

11、ft(xn,N)Xk=4,0,0,0;N=4;Xk=idft(xn,N)xn=1,1,1,1;N=length(xn);n=0:N-1;k=0:N-1;Xk=xn*exp(-j*2*pi/N).(n*k);x=(Xk*exp(j*2*pi/N).(n*k)/N;subplot(1,2,2);stem(k,abs(Xk);grid on;title(|X(k)|);axis(-1,N,1.1*min(abs(Xk),1.1*max(abs(Xk);subplot(1,2,1);stem(n,xn);grid;title(x(n);axis(-1,N,1.1*min(xn),1.1*max(xn)

12、;dft函数程序functionXk=dft(xn,N)n=0:1:N-1;k=n;WN=exp(-j*2*pi/N);nk=n*k;WNnk=WN.nk;Xk=xn*WNnk;endidft函数程序functionXk=idft(xn,N)n=0:1:N-1;k=n;WN=exp(-j*2*pi/N);nk=n*k;WNnk=WN.(-nk);Xk=xn*WNnk/N;endl 用MATLAB语言编程实现信号的圆周移位、圆周卷积、验证DFT的圆周时移、圆周卷积性质和圆周卷积与线性卷积的关系。圆周移位Matlab程序n=0:10;M=6;N=11;x=10*0.8.n;y=cirshift(x

13、,M,N);subplot(2,1,1);stem(n,x);title();xlabel(n);ylabel(x(n);subplot(2,1,2); stem(n,y);title();xlabel(n);ylabel(y(n); sigmod函数程序function m = sigmod( n,N );m=rem(n,N);m=m+N;m=rem(m,N);end cirshift函数程序function y = cirshift( x,m,N );if length(x)N error(N must be greater than length(x);endx=x zeros(1,N-

14、length(x);n=0:N-1;n=sigmod(n-m,N);y=x(n+1);end圆周卷积Matlab程序x1=1 2 2;n1=0:2;x2=1 2 3 4;n2=0:3;disp(N=5);n3=0:4;N=5;y=circonvt(x1,x2,N)subplot(3,1,1);stem(n1,x1);title(x1);xlabel(n1);ylabel(x1(n);subplot(3,1,2);stem(n2,x2);title(x2);xlabel(n2);ylabel(x2(n);subplot(3,1,3);stem(n3,y);title(圆周卷积);xlabel(n

15、3);ylabel(y(n);circonvt函数程序function y = circonvt( x1,x2,N );if length(x1)N error(Length(x1) is not great than N);endif length(x2)N error(Length(x2) is not great than N);endx1=x1, zeros(1,N-length(x1);x2=x2, zeros(1,N-length(x2);m=0:N-1;x2=x2(mod(-m,N)+1);H=zeros(N,N);for n=1:N; H(n,:)=cirshift(x2,n-

16、1,N);endy=x1*H;endl 验证一个实周期序列奇偶部分的DFT与此序列本身的DFT之间的关系。Matlab程序 functionxe,xo,m=evenodd(x,n)if any(imag(x)=0) errorendm=-fliplr(n);m1=min(m,n);m2=max(m,n);m=m1:m2;nm=n(1)-m(1);n1=1:length(n);x1=zeros(1,length(m);x1(n1+nm)=x;x=x1;xe=0.5*(x+fliplr(x);xo=0.5*(x-fliplr(x);n=0:10;x=stepseq(0,0,10)-stepseq(

17、10,0,10);xe,xo,m=evenodd(x,n);subplot(2,2,2);stem(m,xe);title(偶部);xlabel(n);ylabel(xe(n);subplot(2,2,4);stem(m,xo);title(奇部);xlabel(n);ylabel(xo(n);l 用MATLAB语言编程实现信号的Z变换及其反变换、Z变换的零极点分布。a=1 1 -6;b=0 5 0;r,p,k=residuez(b,a);subplot(121);zplane(b,a);title(零极点分布图);H,w=freqz(b,a,100);magH=abs(H);phaH=ang

18、le(H);figure(2)subplot(222);plot(w/pi,magH);gridxlabel(frequency in pi units);title(magnitude part);subplot(223),plot(w/pi,phaH/pi);gridxlabel(frequency in pi units);title(Angle part);5、 实验扩展思考 1 编程产生方波信号序列和锯齿波信号序列。x=0:1/256:8;y1=square(pi*x); subplot(2,1,1);plot(x,y1);axis(0,8,-2,2);title(方波); xlab

19、el(x);ylabel(y1);grid on; y2=sawtooth(pi*x); subplot(2,1,2);plot(x,y2);title(锯齿波); xlabel(x);ylabel(y2);grid on;2 实验中所产生的正弦序列的频率是多少?怎样才能改变它?分别是哪些参数控制该序列的相位、振幅和周期?正弦序xn=Asin(w0n+)频率f=w0/2pi通过改变w0改变频率f;控制序列相位,A控制序列振幅,w0控制序列周期。3 编程实现序列长度为N的L点的正反离散傅里叶变换,并分析讨论所得出的结果,其中LN,如L=8,N=6。functionXk=dft(xn,N)n=0:

20、1:8-1;k=n; WN=exp(-1j*2*pi/N);nk=n*k;WNnk=WN.nk; Xk=xn*WNnk; functionXk=idft(xn,N)n=0:1:8-1;k=n; WN=exp(-1j*2*pi/N);nk=n*k; WNnk=WN.(-nk); Xk=xn*WNnk/N; 4 由实验说明离散傅里叶变换的对称关系,说明序列的时域和频域的关联特性。 离散傅里叶变换具有共轭对称性 (1)复共轭序列的DFT。设x*(n)为x(n)的复共轭序列,长度为N, X(k)=DFTx(n),则DFTx*(n)=X*(N-K),0=k=N1+N2-1,y(n)=y1(n)。2、通过编写程序,让我更熟练的使用MATLAB,能更好的理解书本所学的内容3、心得体会:在使用matlab软件定义函数时,必须对函数的含义理解清楚,要不然很容易定义函数出现错误。其次要对matlab自带函数的含义用法理解清楚。这次实验我最大的收获就是对离散时间序列的理论基础的概念有了一个很好的复习和更深刻的认识。遇到最大的问题就是定义函数时考虑不够全面。但是我相信随着后面实验的进行,我能将matlab这个工具与课本的理论基础知识完美的结合起来。 +

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1