实验1--用MATLAB进行信号频谱分析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第7章数字信号处理实验实验3用MATLAB进行信号频谱分析19实验1用MATLAB进行信号频谱分析一、实验目的㈠初步掌握MATLAB产生常用离散时间信号的编程方法。㈡学习编写简单的FFT算法程序,对离散信号进行幅频谱分析。㈢观察离散时间信号频谱的特点。二、实验原理㈠常用的离散时间信号在MATLAB语言主要是研究离散信号的。常用的离散信号有:1.单位取样序列0001)(nnn2.单位阶跃序列0001)(nnnu3.实指数序列Rananxn;)(4.复指数序列nenxnj)(0)(5.正(余)弦序列)cos()(0nnxn6.周期序列nNnxnx)()(㈡离散信号的产生离散信号的图形显示使用stem指令。在MATLAB中的信号处理工具箱中,主要提供的信号是离散信号。由于MATLAB对下标的约定为从1开始递增,例如x=[5,4,3,2,1,0],第7章数字信号处理实验实验3用MATLAB进行信号频谱分析20表示x(1)=5,x(2)=4,X(3)=3…因此要表示一个下标不由1开始的数组x(n),一般应采用两个矢量,如n=[-3,-2,-1,0,l,2,3,4,5];x=[1,-l,3,2,0,4,5,2,1];这表示了一个含9个采样点的矢量:X(n)={x(-3),x(-2),x(-1),x(0),x(1),x(2),x(3),x(4),x(5)}。1.单位取样序列0001)(nnn这一函数实现的方法有二:方法一:可利用MATLAB的zeros函数。x=zeros(1,N);%建立一个一行N列的全零数组x(1)=1;%对X(1)赋1方法二:可借助于关系操作符实现n=1:N;x=[n==1];%n等于1时逻辑关系式结果为真,x=1;n不等于1时为假,x=0如要产生202100100)(10)(nnnnnnnnnnnn则可采用MATLAB实现:n=n1:n2;x=[(n-n0)==0];%n=n0时逻辑关系式结果为真,x=1;n≠n0时为假,x=0第7章数字信号处理实验实验3用MATLAB进行信号频谱分析212.单位阶跃序列0001)(nnnu这一函数可利用MATLAB的ones函数实现:x=ones(1,N);还可借助于关系操作符“=”来实现。如要产生在n1≤n0≤n2上的单位阶跃序列00001)(nnnnnnu则可采用MATLAB实现:n=n1:n2;x=[(n-n0)=0];%n-n0≥0为真,x=1;n-n0<0时为假,x=03.实指数序列为任意实数aanxn)(采用MATLAB实现:n=0:N-l;x=a.^n;4.复指数序列njenx)(0)(采用MATLAB实现:n=0:N-1;第7章数字信号处理实验实验3用MATLAB进行信号频谱分析22x=exp((lu+j*w0)*n);5.正(余)弦序列)cos()(0nnx采用MATLAB实现:n=0:N-l;x=cos(w0*n+Q);6.随机序列MATLAB中提供了两类(伪)随机信号:rand(1,N)产生[0,1)上均匀分布的随机矢量;randn(1,N)产生均值为0,方差为1的高斯随机序列,也就是白噪声序列。其它分布的随机数可通过上述随机数的变换而产生。7.周期序列)()(Nnxnx例如,设t1表示T序列中一个周期的序列,要产生4个周期的T序列,用MATLAB实现:T=[t1t1t1t1];三、实验任务㈠运行实验原理中介绍的例题程序,读懂每一条程序的含义,熟悉MATLAB中离散信号和频谱分析常用的子函数。㈡编写求解例1中单位阶跃序列频谱的程序,并显示其信号及其频谱曲线。n0=0;nf=10;ns=3;N=32;M=100;n2=n0:nf;x2=[(n2-ns)=0];subplot(3,1,1),stem(n2,x2);%画出x2的单位阶跃序列第7章数字信号处理实验实验3用MATLAB进行信号频谱分析23i=0:N-1;j=0:M-1;%样点自0开始y1=fft(x2,N);%对x2进行32点傅里叶变换y2=fft(x2,M);%对x2进行100点傅里叶变换aw1=abs(y1);aw2=abs(y2);%求幅度谱subplot(3,1,2);plot(i,aw1)%32点傅里叶变换的频谱图subplot(3,1,3);plot(j,aw2)%100点傅里叶变换的频谱图㈢已知一个用square产生的方波信号频率为100Hz,幅度为2V,对其进行32点的采样并进行FFT运算,显示采样后的信号及其频谱图。(可参考例5)f=100;Um=2;nt=1;%输入信号频率100、振幅为2和显示一个周期个数N=32;T=nt/f;%N为32个采样点数,T为窗口显示时间dt=T/N;%采样时间间隔n=0:N-1;t=n*dt;xn=Um*square(2*f*pi*t,50);%产生时域信号subplot(2,1,1);stem(t,xn);%显示时域信号axis([0T1.1*min(xn)1.1*max(xn)]);ylabel('x(n)');i=0:N-1;y=fft(xn,N);AW=abs(y);%用FFT子函数求信号的频谱subplot(2,1,2);stem(i,AW);%显示信号的频谱ylabel('|X(k)|');第7章数字信号处理实验实验3用MATLAB进行信号频谱分析24(四)一无限长序列x(n)=)(8.0nun①截取序列长度M=10点,用FFT计算其频谱,并与理论计算的结果进行比较,观察频谱泄漏现象.②截取序列长n0=0;nf=9;n3=n0:nf;x3=(0.8).^n3;%实数指数序列subplot(3,1,1);stem(n3,x3);N=10;i=0:N-1;M=50;j=0:M-1;y1=fft(x3,N);y2=fft(x3,M);aw1=abs(y1);aw2=abs(y2);%求幅度谱subplot(3,1,2);plot(i,aw1);subplot(3,1,3);plot(j,aw2);第7章数字信号处理实验实验3用MATLAB进行信号频谱分析25四、实验总结3.我们知道抽样时间间隔越小,此时显示的频谱越是准确。因此,当我们在利用fft计算频谱的时候,我们应该尽量提高取样点数,在任务一中发现32个采样点比100个采样点的频谱泄露严重,同时在任务三中也可以发现在M=10的时候频谱泄露比M=50的时候严重。4连续信号的频谱是非周期的,一旦我们将其离散,那么依据“一个域的离散必定导致另一个域的周期延拓”,因此我们可以知道离散时间信号的频谱是周期的。

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功