您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 实验五基于Matlab的信号频谱分析(复杂)
班级:学号:姓名:本次实验注意:《实验五MALTAB基础知识(简单)》《实验五基于Matlab的信号频谱分析(复杂)》选作一个即可实验五基于Matlab的信号频谱分析(一)实验目的直接序列扩频通信系统是目前应用最为广泛的系统。在扩频过程中,对于频谱的分析是重要研究内容,因此本实验目的在于熟悉信号的傅里叶变换,用傅里叶变换进行相应的频谱分析。(二)实验设备计算机,Matlab软件(三)实验要求本实验属于验证实验,请完成(四)实验内容的实验仿真,并将仿真结果截图至指定位置(注意:共3处)。请在页眉处填写班级、学号、姓名,并将实验报告命名为“实验五_学号_姓名”,并通过FTP上传至指定文件夹。(四)实验内容a)周期信号的傅里叶级数(1)基本原理若一周期信号ftftkT,其中k为整数,T成为信号的周期。若周期信号在一个周期内可积,则可通过傅立叶级数对该信号进行展开。其傅立叶展开式如(2-1)式所示:2sjnftnnftFe(1-1)其中,/22/21sTjnftnTFftedtT,T为信号周期;1/sfT为信号的基波;nF为傅立叶展开系数,其物理意义为频率分量snf的幅度和相位。式1-1表明:信号可以展开成一系列频率为1/sfT的整数倍的正弦、余弦信号的加权叠加,其中相应频率分量的加权系数即为nF,因此可以用周期信班级:学号:姓名:号的傅立叶展开来重构该周期信号,其逼近程度与展开式的项数有关。(2)举例设周期信号一个周期的波形为1,0/21/2tTftTtT,,求该信号傅里叶级数展开式,并用MATLAB画出傅里叶级数展开后的波形,并通过展开式项数的变化考察其对ft的逼近程度,考察其物理意义。解:201sTjnftnFftedtT222022111122sin/2ssTTjnftjnftTjnjnssjnedtedtTeeTjnfjnfcne注:sinsincxxxsax源代码:clearall;N=20;%取展开式的项数为2N+1项%可以改为N=input('inputN:')T=1;%周期为1fs=1/T;N_sample=128;%为了画波形,设置每个周期的采样点数dt=1/N_sample;%时间分辨率t=0:dt:10*T-dt;%取10个周期n=-N:N;Fn=sinc(n/2).*exp(-j*n*pi/2);%求傅立叶系数Fn(N+1)=0;%当n=0时,代入Fn得Fn=0,由于数组的序号是从1开始的,即n=-N班级:学号:姓名:%时对应Fn(1),n=0时对应Fn(n+1),即n=N时对应Fn(2N+1)ft=zeros(1,length(t));%建立一个全零数组,其长度和原始信号长度相同,用%来存放由傅里叶展开恢复的信号form=-N:N;%一共2N+1项累加。ft=ft+Fn(m+N+1)*exp(j*2*pi*m*fs*t);%Fn是一个数组,而MATLAB中数组中%元素的序号是从1开始的,故Fn序号是从1开始的,到2N+1结束,该语句中%体现为为Fn(m+N+1)而当n=0时,Fn=0,在数组中的位置为第N+1个元素,故%令Fn(N+1)=0endplot(t,ft)仿真结果截图:N=100时(图1)N=20时(图2)班级:学号:姓名:可以看出:用周期信号的傅立叶展开来重构该周期信号,其逼进程度与展开式的项数有关。b)信号的傅里叶变换及其反变换(1)基本原理对于非周期信号st,满足绝对可积的条件下,可利用傅里叶变换对其进行频域分析。2jftSfstedt,2jftstSfedf其中,Sf称为信号st傅里叶变换,表示了该信号的频谱特性。在数字信号处理中,需要利用离散傅立叶变换(DFT)计算信号的傅里叶变换,现在考察一下信号st的傅里叶变换与其离散傅立叶变换之间的关系。将信号st按照时域均匀抽样定理进行等间隔抽样后,得到序列,0,1,2,,1nsnN,nssnt,其中,t为抽样间隔,则由数字信号处理的知识可知,序列ns的离散傅立叶变换为2100,1,2,,1NjnkNknnSsekN其中,N为采样点数。而st在一段时间0,T内的傅立叶变换为20TjftSfstedt12021/0210limlimlimnNjfntNnNtTNjnfTNNnsntsNjnfTNnNnsntetTsnteNTseN令注意到得到st在一段时间0,T内的傅立叶变换是连续谱Sf,而对st进行离散傅班级:学号:姓名:立叶变换得到的是离散谱kS,为了比较它们之间的关系,对Sf也进行等间隔抽样,且抽样间隔为1fT,即其频率分辨率,则在频率范围0,1Nf内,210limNjnfTNnNnTSfSkfseN2100,1,2,,1limlimNjnkNnNnkNTseNTSkNN可以看到,st的离散傅里叶变换与st在一段时间0,T内的傅立叶变换Sf的抽样Skf成正比。由于N点离散傅里叶变换具有*kkmNSS的性质,故信号st连续谱的负半轴部分可以通过对kS的平移得到。需要注意的是信号st的离散傅立叶变换只和信号st在一段时间0,T内的傅立叶变换有关,而由公式1-1,st的频谱是在时间,上得到的。所以上述计算所得到的并不是真正的信号频谱,而是信号加了一个时间窗后的频谱。当信号st是随时间衰减的或是时限信号,只要时间窗足够长,可以通过这种方法获得信号的近似频谱。因此,用DFT计算的信号频谱精度依赖于信号、抽样的时间间隔和时间窗的大小。一般情况下,对于时限信号,在抽样时间间隔小,即抽样频率高的情况下能获得较为精确的信号频谱。计算信号的离散傅里叶变换在数字信号处理中有一种高效算法,即快速傅里叶变换FFT,Matlab中也有专门的工具,下面简要介绍:fft(x),x是离散信号,或对模拟信号取样后的离散值。ifft(x),x是对信号进行快速傅里叶变换后的离散谱。源代码一:利用fft,fftshift定义函数T2F计算信号的傅立叶变换function[f,sf]=T2F(t,st)%该子函数需要两个参数t和st。%t—离散时间;st—离散信号dt=t(2)-t(1);%时间分辨率班级:学号:姓名:T=t(end);df=1/T;%频率分辨率N=length(st);%离散傅立叶变换长度f=-N/2*df:df:N/2*df-df;%设定频谱区间,注意要关于原点对称,共有N个%点,包括0点,故要减去一个dfsf=fft(st);sf=T/N*fftshift(sf);%信号的频谱与离散傅立叶变换之间的关系,%fftshift(x)是将信号的频谱x进行移位,与原点对称。源代码二:利用ifft,fftshift定义函数T2F计算信号的傅立叶反变换function[t,st]=F2T(f,sf)%f离散的频率;sf—信号的频谱df=f(2)-f(1);%频率分辨率Fmx=f(end)-f(1)+df;%频率区间长度dt=1/Fmx;%已知频率区间长度时,求时间分辨率,由前面频率分辨率公式△f=df=1/T,%T=dt*N,得到△f=df=1/(dt*N),故dt=1/(df*N)=1/Fmx,即时间分辨率N=length(sf);T=dt*N;%信号持续时间t=0:dt:T-dt;%离散傅立叶反变换,是T2F的逆过程sff=fftshift(sf);%把对称的频谱进行平移,平移后同T2F中的sfst=Fmx*ifft(sff);%由于T2F中求信号频谱在DFT基础上乘了一个因子T/N,反变换求信号时要乘以其倒数即N/T=1/dt,正好等于Fmx。(2)举例设非周期信号1,0/21/2tTstTtT,,求该信号的傅里叶变换,用MATLAB画出班级:学号:姓名:傅里叶变换后的频谱,并对频谱进行反变换,画出st的波形。解:22202TTjftjftTSfedtedt222211122222222122112222114sinsin2222122jfTjfTjfTjfTjfTjfTjfTjfTjfTjfTjfTjfTjeeejfjfeeeejfjfjfeeejffTfTfeejTjffTfjTe2sin/2fTcfT主程序:clearallT=1;N_sample=128;%为了画波形,设置每个周期的采样点数dt=1/N_sample;%时间分辨率t=0:dt:T-dt;st=[ones(1,N_sample/2),-ones(1,N_sample/2)];%依据T将信号离散化subplot(311);plot(t,st);axis([01-22]);xlabel('t');ylabel('s(t)');subplot(312);[f,sf]=T2F(t,st);plot(f,abs(sf));holdon;%画出sf的幅度谱,不含相位axis([-101001]);xlabel('f');ylabel('|S(f)|');sff=T^2*j*pi*f*0.5.*exp(-j*2*pi*f*T).*sinc(f*T*0.5).*sinc(f*T*0.5);班级:学号:姓名:%依据傅里叶变换求信号频谱plot(f,abs(sff),'r-')[t,st]=F2T(f,sf);%进行离散傅立叶反变换,求原始信号subplot(313);axis([01-22]);xlabel('t');ylabel('恢复的s(t)');plot(t,st);holdon;仿真结果截图(图3):
本文标题:实验五基于Matlab的信号频谱分析(复杂)
链接地址:https://www.777doc.com/doc-2531429 .html