快速傅里叶变换fft的Matlab实现 实验报告.doc

上传人:大张伟 文档编号:9077112 上传时间:2021-02-01 格式:DOC 页数:10 大小:187KB
返回 下载 相关 举报
快速傅里叶变换fft的Matlab实现 实验报告.doc_第1页
第1页 / 共10页
快速傅里叶变换fft的Matlab实现 实验报告.doc_第2页
第2页 / 共10页
快速傅里叶变换fft的Matlab实现 实验报告.doc_第3页
第3页 / 共10页
快速傅里叶变换fft的Matlab实现 实验报告.doc_第4页
第4页 / 共10页
快速傅里叶变换fft的Matlab实现 实验报告.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《快速傅里叶变换fft的Matlab实现 实验报告.doc》由会员分享,可在线阅读,更多相关《快速傅里叶变换fft的Matlab实现 实验报告.doc(10页珍藏版)》请在三一文库上搜索。

1、一、实验目的1 在理论学习的基础上,通过本实验加深对快速傅立叶变换的理解;2 熟悉并掌握按时间抽取FFT算法的程序;3 了解应用FFT进行信号频谱分析过程中可能出现的问题,例如混淆、泄漏、栅栏效应等,以便在实际中正确应用FFT。二、实验内容1 仔细分析教材第六章时间抽取法FFT 的算法结构,编制出相应的用FFT进行信号分析的C语言(或MATLAB 语言)程序;用MATLAB语言编写的FFT源程序如下:% 输入数据f、N、T及是否补零clc;clear;f=input(输入信号频率f:); N=input(输入采样点数N:);T=input(输入采样间隔T:);C=input(信号是否补零(补零

2、输入1,不补零输入0):); %补零则输入1,不补则输入0if(C=0) t=0:T:(N-1)*T; x=sin(2*pi*f*t); b=0;else b=input(输入补零的个数:); while(log2(N+b)=fix(log2(N+b) b=input(输入错误,请重新输入补零的个数:); end t=0:T:(N+b-1)*T; x=sin(2*pi*f*t).*(t=(N-1)*T);end% fft算法的实现A=bitrevorder(x); % 将序列按二进制倒序N=N+b;M=log2(N); % M为蝶形算法的层数W=exp(-j*2*pi/N); for L=1:

3、1:M % 第L层蝶形算法 B=2L/2; % B为每层蝶形算法进行加减运算的两个数的间隔 K=N/(2L); % K为每层蝶形算法中独立模块的个数 for k=0:1:K-1 for J=0:1:B-1 p=J*2(M-L); % p是W的指数 q=A(k*2L+J+1); % 用q来代替运算前面那个数 A(k*2L+J+1)=q+Wp*A(k*2L+J+B+1); A(k*2L+J+B+1)=q-Wp*A(k*2L+J+B+1); end end end% 画模特性的频谱图z=abs(A); % 取模z=z./max(z); %归一化hold onsubplot(2,1,1);stem(0

4、:1:N-1,x,DisplayName,z);title(时域信号);subplot(2,1,2);stem(0:1:N-1,z,DisplayName,z);title(频谱图);figure(gcf) %画图2 用FFT程序计算有限长度正弦信号分别在以下情况下所得的DFT结果并进行分析和讨论:a) 信号频率f50Hz,采样点数N=32,采样间隔T=0.000625sb) 信号频率f50Hz,采样点数N=32,采样间隔T=0.005sc) 信号频率f50Hz,采样点数N=32,采样间隔T=0.0046875sd) 信号频率f50Hz,采样点数N=32,采样间隔T=0.004se) 信号频率

5、f50Hz,采样点数N=64,采样间隔T=0.000625sf) 信号频率f250Hz,采样点数N=32,采样间隔T=0.005sg) 将c)信号后补32个0,做64点FFT三、实验分析DFT是对有限序列做傅里叶变换后在频域上进行采样,而相对应的时域以频谱上的采样频率的倒数进行周期拓展。而在此题中,题中给出时域上的连续信号,对该连续信号进行加窗采样后得到有限序列,要求对该有限序列求DFT。所以整个步骤为:对时域加窗,则相对应的频域与窗函数的傅里叶变换即sinc函数相卷积;再对时域采样,则对应的频域以时域采样频率的倒数进行周期性拓展;再将时域以窗长为周期进行周期性拓展,对应的频域以该周期的倒数进

6、行采样,即得所求DFT。a) 信号频率f50Hz,采样点数N=32,采样间隔T=0.000625s。Sin函数信号对应的频谱图为在窗长,对应的sinc函数主瓣宽,其余波节与波节间距,两信号在频域上相卷,即将sinc函数平移;在时域以进行采样,即频域以进行周期性拓展。在频域上采32个点,则对应每个点之间的间距为,(对应时域以0.02s进行周期性拓展,不予考虑)。此时我们可以发现除了在f=50Hz(对应为第1个点)上采到的点幅值为sinc函数的最大值外,其他频率上采到的点刚好对应sinc函数的波节处,即此时采到的值为0。又因为DFT满足共轭对称,所以可得图如上。b) 信号频率f50Hz,采样点数N

7、=32,采样间隔T=0.005s。与a相比,采样间隔T不同,所以窗长,为a中窗长的8倍,所以窗长在频域上对应的sinc函数主瓣宽及波节与波节间距都为a中的即,两信号相卷,将sinc函数平移到;在时域以进行采样,即频域以进行周期性拓展。在频域上采32个点,则对应每个点之间的间距为。此时我们可以发现除了在f=50Hz上采到的点幅值为sinc函数的最大值外,其他频率上采到的点刚好对应sinc函数的波节处,即采到的值为0,而f=50Hz=8*6.25Hz,则第8个点为1;又因为DFT满足共轭对称,所以可得图如上。c) 信号频率f50Hz,采样点数N=32,采样间隔T=0.0046875s。Sin函数信

8、号对应的频谱图为在窗长,对应的sinc函数主瓣宽,其余波节与波节间距,两信号在频域上相卷,即将sinc函数平移;在时域以进行采样,即频域以进行周期性拓展。在频域上采32个点,则对应每个点之间的间距为,与波节间距相等。但可以发现f=50Hz对应第7.5个点,而所求必须采到整数点上,所以采出来的点即没有最大值,也不存在0点。又因为DFT满足共轭对称,所以可得图如上。d) 信号频率f50Hz,采样点数N=32,采样间隔T=0.004s。Sin函数信号对应频谱图为在窗长,对应的sinc函数主瓣宽,波节与波节间距,两信号在频域上相卷,即将sinc函数平移;在时域以进行采样,即频域以进行周期性拓展。在频域

9、上采32个点,则对应每个点之间的间距为,与波节间距相等。但可以发现f=50Hz对应第6.4个点,而所求必须采到整数点上,所以采出来的点即没有最大值,也不存在0点。又因为DFT满足共轭对称,所以可得图如上。e) 信号频率f50Hz,采样点数N=64,采样间隔T=0.000625s。Sin函数信号对应的频谱图为在窗长,对应的sinc函数主瓣宽,其余波节与波节间距,两信号在频域上相卷,即将sinc函数平移;在时域以进行采样,即频域以进行周期性拓展。在频域上采64个点,则对应每个点之间的间距为。此时我们可以发现除了在f=50Hz(对应为第2个点)上采到的点幅值为sinc函数的最大值外,其他频率上采到的

10、点刚好对应sinc函数的波节处,即此时采到的值为0。又因为DFT满足共轭对称,所以可得图如上。f) 信号频率f250Hz,采样点数N=32,采样间隔T=0.005s。与a相比,采样间隔T不同,所以窗长,为a中窗长的8倍,所以窗长在频域上对应的sinc函数主瓣宽及波节与波节间距都为a中的即,两信号相卷,将sinc函数平移到;在时域以进行采样,即频域以进行周期性拓展,又因为,所以相当于将sinc函数平移到。在频域上采32个点,则对应每个点之间的间距为。此时我们可以发现除了在f=50Hz上采到的点幅值为sinc函数的最大值外,其他频率上采到的点刚好对应sinc函数的波节处,即采到的值为0,而f=50

11、Hz=8*6.25Hz,则第8个点为1;又因为DFT满足共轭对称,所以可得图如上。与b比较易得两图所得结果相同。g) 将c信号后补32个0,做64点FFT。Sin函数信号对应的频谱图为在窗长,对应的sinc函数主瓣宽,其余波节与波节间距,两信号在频域上相卷,即将sinc函数平移;在时域以进行采样,即频域以进行周期性拓展。在频域上采64个点,则对应每个点之间的间距为。可以发现f=50Hz对应第15个点,并且每个波节刚好被采到。又因为DFT满足共轭对称,所以可得图如上。与c信号相比较易发现刚好在c信号的每两点的中间多采一点。小结:影响DFT结果的参数有信号频率f,采样点数N,采样间隔T,是否补零。

12、信号频率f:由b)和f)比较得,f影响到sinc函数做卷积后的位置,而这这两个信号中的频率差恰好等于时域采样频率,又在频域上以为周期做拓展,所以得到的DFT结果一样。采样点数N:由a)和e)比较得,频谱上虽然采样更密,但同时频谱也被压缩,所以采样点数N并不产生影响。采样间隔T:由a)、b)、c)、d)比较得,采样间隔T与N一起决定了窗的长度,与f一起决定了频谱上采样点的位置,是影响频谱图像的主要因素。补零:由c)和g)比较得,补零对应在频谱上采样密度增加一倍,使频谱图更加清晰。如果补零后的总点数是原采样点数的倍,则频谱上采样的密度为原来的倍。四、实验总结这次实验让我对fft算法有了详细的掌握,能够熟练地用fft算法求解DFT。除此之外,对DFT的物理意义有了更加深入的了解,掌握了求解DFT的详细过程,并对影响DFT的几种因素进行了分析,对栅栏效应、频谱分辨率、泄露效应及各种参数的选择有了进一步的了解。总而言之,这次实验编程部分还算比较容易,而因为对DFT的原理不是很熟练,所以觉得对各种参数的分析比较难,但在老师和同学们的帮助下最后还是掌握了这部分知识,也是这种感觉让我很期待下一次的实验。

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

当前位置:首页 > 科普知识


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