您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 西安邮电大学《数字信号处理实验》
《数字信号处理实验》第1页共39页实验一:信号的表示一、实验目的:1、了解MATLAB程序设计语言的基本特点,熟悉MATLAB软件运行环境。2、掌握各种信号的建模方式。3、掌握各种信号的图形表示方法。4、掌握变量等有关概念,具备初步的将一般数学模型转化为对应的计算机模型并进行处理的能力二、实验设备:PC机MATLAB7.0软件三、实验内容学习使用MATLAB7.0软件。学习信号的图形表示方法,掌握各种信号的建模方式。实现单位采样序列()nδ、单位阶跃序列()un、矩形序列()NRn、三角波、方波、锯齿波、Sinc函数。四、参考实例:常用的MATLAB绘图语句有figure、plot、subplot、stem等,图形修饰语具有title、axis、text等。(1)figure语句figure有两种用法。当只有一句figure命令时,程序会创建一个新的图形窗口,并返回一个整数型的窗口编号。当采用figure(n)时,表示将第n个图形窗口作为当前的图形窗口,将其显示在所有窗口的最前面。如果该图形窗口不存在,则新建一个窗口,并赋以编号n。(2)plot语句线形绘图函数。用法为plot(x,y,’s’)。参数x为横轴变量,y为纵轴变量,s用以控制图形的基本特征如颜色、粗细等,通常可以省略,常用方法如表1-1所示。表1-1plot命令的参数及其含义参数含义参数含义参数含义y黄色.点-实线m紫色o圆:虚线c青色x打叉-.点划线r红色+加号--破折线g绿色*星号^向上三角形b蓝色s正方形向左三角形w白色d菱形向右三角形k黑色v向下三角形p五角星形《数字信号处理实验》第5页共39页•功能:序列左右翻转•调用格式:Y=FLIPLR(X)•%X=123翻转后321•456654•★CUMSUM、SUM•功能:计算序列累加•调用格式:Y=CUMSUM(X)%向量X元素累加,记录每一次的累加结果,而SUM只记录最后的结果五、实验报告(1)实现单位采样序列()nδ、单位阶跃序列()un、矩形序列()NRn,并用图形显示。写出程序及输出图形clearall;n=1:10;x=zeros(1,10);x(1)=1;subplot(2,1,1);stem(x);axis([0,4,0,1.5]);clearall;n=1:10;x=sign(sign(10-n)+1);subplot(2,1,1);stem(x);axis([0,10,0,1.5]);clearall;n=1:50;x=sign(sign(10-n)+1);subplot(2,1,1);stem(x);axis([0,20,0,1.5]);《数字信号处理实验》第6页共39页(2)实现三角波、方波、锯齿波、Sinc函数,并用图形显示。写出程序及输出图形(3)写出实验心得,和对课程和实验的一些建议。t=0:0.0001:0.1;y=sawtooth(2*pi*50*t,0.5);plot(t,y);axis([0,0.1,-1.2,1.2]);t=0:0.0001:0.1;y=square(2*pi*50*t);plot(t,y);axis([0,0.1,-1.2,1.2]);t=0:0.0001:0.1;y=sawtooth(2*pi*50*t);plot(t,y);axis([0,0.1,-1.2,1.2]);X=-4:0.2:4;Y=sinc(X);plot(X,Y);《数字信号处理实验》第7页共39页《数字信号处理实验》第8页共39页实验二:FFT频谱分析及应用一、实验目的:1、通过实验加深对FFT的理解;2、熟悉应用FFT对典型信号进行频谱分析的方法。二、实验设备:PC机MATLAB7.0软件三、实验内容使用MATLAB程序实现信号频域特性的分析。涉及到离散傅立叶变换(DFT)、快速傅立叶变换(FFT)及信号频率分辨率等知识点。四、实验原理与方法在各种信号序列中,有限长序列占重要地位。对有限长序列可以利用离散傅立叶变换(DFT)进行分析。DFT不但可以很好的反映序列的频谱特性,而且易于用快速算法(FFT)在计算机上进行分析。有限长序列的DFT是其z变换在单位圆上的等距离采样,或者说是序列傅立叶的等距离采样,因此可以用于序列的谱分析。FFT是DFT的一种快速算法,它是对变换式进行一次次分解,使其成为若干小数据点的组合,从而减少运算量。在MATLAB信号处理工具箱中的函数fft(x,n),可以用来实现序列的N点快速傅立叶变换。经函数fft求得的序列一般是复序列,通常要求出其幅值和相位。MATLAB中提供了求复数的幅值和相位的函数:abs、angle,这些函数一般和fft同时使用。五、实验报告(1)模拟信号)8cos(5)4sin(2)(tttxππ+=,以)1:0(01.0−==Nnnt进行采样,求:○1N=40点FFT的幅度频谱,从图中能否观察出信号的2个频谱分量?○2提高采样点数,如N=128,再求该信号的幅度频谱,此时幅度频谱发生了什么变化?信号的2个模拟频率和数字频率各为多少?FFT频谱分析结果与理论上《数字信号处理实验》第9页共39页是否一致?(2)一个连续信号含三个频谱分量,经采样得以下序列:))215.0(2cos())15.0(2cos()15.02sin()(ndfndfnnx+×++×+×=πππ○1N=64,df分别为161、1/64,观察其频谱;○2N=64、128,df为1/64,做128点得FFT,其结果有何不同?N=64;n=0:N-1;df=1/16;x=sin(2*pi*0.15*n)+cos(2*pi*(0.15+df)*n)+cos(2*pi*(0.15+2*df)*n);k=0:N/2;w=2*pi/N*k;X=fft(x,N);magX=abs(X(1:N/2+1));subplot(2,1,1);stem(n,x,'.');title('signalx(n)');subplot(2,1,2);plot(w/pi,magX);title('FFTN=64');xlabel('f(unit:pi)');ylabel('|X|');gridN=40;n=0:N-1;t=0.01*n;x=2*sin(4*pi*t)+5*cos(8*pi*t);k=0:N/2;w=2*pi/N*k;X=fft(x,N);magX=abs(X(1:N/2+1));subplot(2,1,1);stem(n,x,'.');title('signalx(n)');sublpot(2,1,2);plot(w/pi,magX);title('FFTN=40');xlabel('f(unit:pi)');ylable('|X|');gridN=128;n=0:N-1;t=0.01*n;x=2*sin(4*pi*t)+5*cos(8*pi*t);k=0:N/2;w=2*pi/N*k;X=fft(x,N);magX=abs(X(1:N/2+1));subplot(2,1,1);stem(n,x,'.');title('signalx(n)');sublpot(2,1,2);plot(w/pi,magX);title('FFTN=128');xlabel('f(unit:pi)');ylable('|X|');grid《数字信号处理实验》第10页共39页(3)被噪声污染得信号,比较难看出所包含得频率分量,如一个由50Hz和120Hz正弦信号构成的信号,受零均值随机噪声的干扰,数据采样率为1000Hz,试用FFT函数来分析其信号频率成分,要求:○1画出时域波形;○2分析信号功率谱密度。注:在MATLAB中,可用函数rand(1,N)产生均值为0,方差为1,长度为N的高斯随机序列。(4)写出本次实验心得,和对课程和实验的一些建议,不少于100字。t=0:0.001:0.8;x=sin(2*pi*50*t)+cos(2*pi*120*t);y=x+1.5*rand(1,length(t));subplot(3,1,1);plot(t,x);subplot(3,1,2);plot(t,y);Y=fft(y,512);P=Y.*conj(Y)/512;f=1000*(0:255)/512;subplot(3,1,3);plot(f,P(1:256));N=64;n=0:N-1;df=1/64;x=sin(2*pi*0.15*n)+cos(2*pi*(0.15+df)*n)+cos(2*pi*(0.15+2*df)*n);k=0:N/2;w=2*pi/N*k;X=fft(x,N);magX=abs(X(1:N/2+1));subplot(2,1,1);stem(n,x,'.');title('signalx(n)');subplot(2,1,2);plot(w/pi,magX);title('FFTN=64');xlabel('f(unit:pi)');ylabel('|X|');gridN=128;n=0:N-1;df=1/64;x=sin(2*pi*0.15*n)+cos(2*pi*(0.15+df)*n)+cos(2*pi*(0.15+2*df)*n);k=0:N/2;w=2*pi/N*k;X=fft(x,N);magX=abs(X(1:N/2+1));subplot(2,1,1);stem(n,x,'.');title('signalx(n)');subplot(2,1,2);plot(w/pi,magX);title('FFTN=128');xlabel('f(unit:pi)');ylabel('|X|');grid《数字信号处理实验》第11页共39页九、参考程序程序1:N=40;n=0:N-1;t=0.01*n;x=2*sin(4*pi*t)+5*cos(8*pi*t);k=0:N/2;w=2*pi/N*k;X=fft(x,N);magX=abs(X(1:N/2+1));subplot(2,1,1);stem(n,x,'.');title('signalx(n)');subplot(2,1,2);plot(w/pi,magX);title('FFTN=40');xlabel('f(unit:pi)');ylabel('|X|');grid程序3:t=0:0.001:0.8;x=sin(2*pi*50*t)+cos(2*pi*120*t);y=x+1.5*randn(1,length(t));subplot(3,1,1);plot(t,x);subplot(3,1,2);plot(t,y);%title('pressanykey,continue...');%pause;Y=fft(y,512);P=Y.*conj(Y)/512;f=1000*(0:255)/512;subplot(3,1,3);plot(f,P(1:256));《数字信号处理实验》第12页共39页实验三:信号的运算-卷积一、实验目的:1、掌握信号的线性卷积运算。2、掌握信号的循环卷积运算。3、掌握信号循环卷积计算线性卷积的条件。二、实验设备:PC机MATLAB7.0软件三、实验内容学习使用MATLAB7.0软件进行建模。学习信号的卷积运算的MATLAB实现。实现信号的线性卷积运算、应用DFT实现线性卷积运算、验证循环卷积计算线性卷积的条件。四、参考实例:如果信号12()()()xnxnxn=⊗利用循环卷积计算,用circonvt函数实现如下:functiony=circonvt(x1,x2,N)if(length(x1)N|length(x2)N)error('N必须大于等于x的长度');endx1=[x1zeros(1,N-length(x1))];x2=[x2zeros(1,N-length(x2))];X1=fft(x1,N);X2=fft(x2,N);X=X1.*X2;y=ifft(X,N);y=real(y);如果信号12()()()xnxnxn=∗利用线性卷积计算,用conv函数实现
本文标题:西安邮电大学《数字信号处理实验》
链接地址:https://www.777doc.com/doc-5377244 .html