实验二用快速傅里叶变换对信号进行频谱分析一、实验目的1.理解离散傅里叶变换的意义;2.掌握时域采样率的确定方法;3.掌握频域采样点数的确定方法;4.掌握离散频率与模拟频率之间的关系;5.掌握离散傅里叶变换进行频谱分析时,各参数的影响。二、实验原理序列的傅里叶变换结果为序列的频率响应,但是序列的傅里叶变换是频率的连续函数,而且在采用计算机计算时,序列的长度不能无限长,为了便于计算机处理,作如下要求:序列x(n)为有限长,n从0~N-1,再对频率ω在0~2π范围内等间隔采样,采样点数为N,采样间隔为2π/N。第k个采样点对应的频率值为2πk/N。可得离散傅里叶变换及其逆变换的定义为102)()(NnnNkjenxkX(1)102)(1)(NkkNnjekXNnx(2)如果把一个有限长序列看作是周期序列的一个周期,则离散傅里叶变换就是傅里叶级数。离散傅里叶变换也是周期的,周期为N。数字频率与模拟频率之间的关系为sff/2,即ssTff22(3)则第k个频率点对应的模拟频率为NkfNTkTNkfsssk212(4)在用快速傅里叶变换进行频谱分析时,要确定两个重要参数:采样率和频域采样点数,采样率可按奈奎斯特采样定理来确定,采样点数可根据序列长度或频率分辨率△f来确定fNfs,则ffNs(5)用快速傅里叶变换分析连续信号的频谱其步骤可总结如下:(1)根据信号的最高频率,按照采样定理的要求确定合适的采样频率fs;(2)根据频谱分辨率的要求确定频域采样点数N,如没有明确要求频率分辨率,则根据实际需要确定频率分辨率;(3)进行N点的快速傅里叶变换,最好将纵坐标根据帕塞瓦尔关系式用功率来表示,横坐标根据式(7-21)转换为模拟频率Hz;(4)根据所得结果进行分析。三、实验内容1.采样率和采样点数的确定在本实验中要用到正弦波、矩形波和正弦调制波正弦波:sin(20πt);矩形波:频率为50Hz、占空比为1的矩形波;正弦波调制波:sin(20πt)×cos(100πt)根据上述波形确定采样频率。假定所有波形的频率分辨率均为0.5Hz,确定频域采样点数。2.信号的频谱分析①正弦波进行快速傅里叶变换;②矩形波进行快速傅里叶变换;③正弦调制波进行快速傅里叶变换;3.分析各信号的频谱与时域波形之间的关系四、实验步骤1.复习并理解离散傅里叶变换的定义和物理意义;2.编写Matlab程序对信号进行频谱分析(参看例题中的程序);3.调试程序,排除程序中的错误;4.分析程序运行结果,检验是否与理论一致;5.如结果不理想,调整有关参数,得到较理想的结果。五、实验报告要求1.阐明实验的目的、原理和内容;2.打印主要程序并粘贴在实验报告中;3.打印实验结果并粘贴在实验报告中;4.针对实验结果加以分析和总结。六、思考题(1)频谱的幅度有没有物理意义?如没有,怎样处理才能有物理意义?(2)为什么所得信号的频谱均是关于中心点对称的?(3)要让所得频谱近似为理想的冲激,该如何调整参数?附例题例1试对信号x(t)=2sin(30πt)-cos(32πt)+sin(60πt)进行频谱分析。解:信号中包含了3种频率:15Hz、16Hz和30Hz,最高频率为30Hz,所以采样率不能低于60Hz,这里取100Hz。没有明确告诉频率分辨率,但是有两个频率仅相差1Hz,因此,频率分辨率不能低于1Hz,取0.1Hz。当然采样率越高、频率分辨率越高,则计算量就越大。程序如下:deltf=0.1;%频率分辨率Fs=100;%采样率N=Fs/deltf;%采样点数n=0:N-1;%采样点x=2*sin(30*pi*n/Fs)-cos(32*pi*n/Fs)+sin(60*pi*n/Fs);%采样y=fft(x);%快速傅里叶变换ye=y.*conj(y);%计算能量subplot(2,2,1);plot(n*Fs/N,real(y),'k');xlabel('频率/Hz');ylabel('幅度');text(45,100,'实部');subplot(2,2,2);plot(n*Fs/N,imag(y),'k');xlabel('频率/Hz');ylabel('幅度');axis([0100-15001500]);text(45,1200,'虚部');subplot(2,2,3);plot(n*Fs/N,ye,'k');xlabel('频率/Hz');ylabel('幅度');axis([0100012e5]);text(45,10e5,'能量');subplot(2,2,4);plot(n*Fs/N,ye/N^2,'k');xlabel('频率/Hz');ylabel('幅度');axis([010001.5]);text(45,1.2,'功率');