




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
按时间抽取的基2FFT算法分析及MATLAB实现按时间抽取的基2FFT算法分析及MATLAB实现按时间抽取的基2FFT算法分析及MATLAB实现资料仅供参考文件编号:2022年4月按时间抽取的基2FFT算法分析及MATLAB实现版本号:A修改号:1页次:1.0审核:批准:发布日期:按时间抽取的基2FFT算法分析及MATLAB实现一、DIT-FFT算法的基本原理基2FFT算法的基本思想是把原始的N点序列依次分解成一系列短序列,充分利用旋转因子的周期性和对称性,分别求出这些短序列对应的DFT,再进行适当的组合,得到原N点序列的DFT,最终达到减少运算次数,提高运算速度的目的。按时间抽取的基2FFT算法,先是将N点输入序列x(n)在时域按奇偶次序分解成2个N/2点序列x1(n)和x2(n),再分别进行DFT运算,求出与之对应的X1(k)和X2(k),然后利用图1所示的运算流程进行蝶形运算,得到原N点序列的DFT。只要N是2的整数次幂,这种分解就可一直进行下去,直到其DFT就是本身的1点时域序列。图1DIT-FFT蝶形运算流图DIT-FFT算法的运算规律及编程思想1.原位计算对N=点的FFT共进行M级运算,每级由N/2个蝶形运算组成。在同一级中,每个蝶的输入数据只对本蝶有用,且输出节点与输入节点在同一水平线上,这就意味着每算完一个蝶后,所得数据可立即存入原输入数据所占用的数组元素(存储单元),经过M级运算后,原来存放输入序列数据的N个存储单元中可依次存放X(k)的N个值,这种原位(址)计算的方法可节省大量内存。2.旋转因子的变化规律N点DIT―FFT运算流图中,每个蝶形都要乘以旋转因子,p称为旋转因子的指数。例如N=8=时各级的旋转因子:第一级:L=1,有1个旋转因子:==J=0第二级:L=2,有2个旋转因子:==J=0,1第三级:L=3,有4个旋转因子:==J=0,1,2,3对于N=的一般情况,第L级共有个不同的旋转因子:=J=0,1,2,…,-1=×=N·故:按照上面两式可以确定第L级运算的旋转因子3、同一级中,同一旋转因子对应蝶形数目第L级FFT运算中,同一旋转因子用在个蝶形中;同一级中,蝶形运算使用相同旋转因子之间相隔的“距离”第L级中,蝶距:D=;5、同一蝶形运算两输入数据的距离在输入倒序,输出原序的FFT变换中,第L级的每一个蝶形的2个输入数据相距:B=。6、码位颠倒输入序列x(n)经过M级时域奇、偶抽选后,输出序列X(k)的顺序和输入序列的顺序关系为倒位关系。将十进制顺序数用I表示,与之对应的二进制是用IB表示,十进制倒序数用J表示,与之对应的二进制是用JB表示。十进制顺序数I增加1,相当于IB最低位加1且逢2向高位进1,即相当于JB最高位加1且逢2向低位进1。JB的变化规律反映到J的变化分为两种情况,若JB的最高位是0(J<N/2),则直接由加1(J←J+N/2)得到下一个倒序值,若JB的最高位是1(J≧N/2),则要先将最高位变0(J←J-N/2),再在次高位加1(J←J+N/4),但次高位加1时,同样要判断0、1值,如果是0(J<N/4),则直接加1(J←J+N/4),否则要先将次高位变0(J←J-N/4)再判断下一位,依次类推,直到完成最高位加1,逢2向右进位的运算。I=J时不需要交换,只对I<J时的情况进行数据交换即可,数据倒序程序框图如如2。7、蝶形运算的规律序列经过时域抽选后,存入数组中,如果蝶形运算的两个输入数据相距B个点,应用原位计算,蝶形运算可表示成如下形式:XL-1(J)XL-1(J)XL-1(J+B)XL(J)=XL-1(J)+WNpXL-1(J+B)XL(J)=XL-1(J)WNpXL-1(J+B)p=J×2p=J×2M-L,J=0,1,2,…,2L-1-18、DIT-FFT程序框图根据DIT-FFT原理和过程,DIT-FFT的完整程序框图如图2:(1)倒序:输入自然顺序序列x(n),根据倒序规律,进行倒序处理;(2)循环层1:确定运算的级数,L=1~M(N=);确定一蝶形两输入数据距离B=(3)循环层2:确定L级的B=个旋转因子;旋转因子指数p=J×,J=0~B-1;(4)循环层3:对于同一旋转因子,用于同一级个蝶形运算中:k的取值从J到N-1,步长为(使用同一旋转因子的蝶形相距的距离)(5)完成一个蝶形运算。图2数据倒序程序框图图3DIT-FFT的完整程序框图程序源代码设计函数myDitFFT(xn)完成一个序列的DIT-FFT运算:functiony=myDitFFT(xn)M=nextpow2(length(xn));N=2^M;disp('调用fft函数运算的结果:'),fftxn=fft(xn,N);iflength(xn)<Nxn=[xn,zeros(1,N-length(xn))];endform=0:N/2-1;%旋转因子指数范围WN(m+1)=exp(-j*2*pi/N)^m;%计算旋转因子enddisp('输入到各存储单元的数据:'),disp(xn);%数据倒序操作J=0;%给倒序数赋初值forI=0:N-1;%按序交换数据和算倒序数ifI<J;%条件判断及数据交换T=xn(I+1);xn(I+1)=xn(J+1);xn(J+1)=T;end%算下一个倒序数K=N/2;whileJ>=K;J=J-K;K=K/2;endJ=J+K;enddisp('倒序后各存储单元的数据:'),disp(xn);%分级按序依次进行蝶形运算forL=1:M;%分级计算disp('运算级次:'),disp(L);B=2^(L-1);forR=0:B-1;%各级按序蝶算P=2^(M-L)*R;forK=R:2^L:N-2;%每序依次计算T=xn(K+1)+xn(K+B+1)*WN(P+1);xn(K+B+1)=xn(K+1)-xn(K+B+1)*WN(P+1);xn(K+1)=T;endenddisp('本级运算后各存储单元的数据:'),disp(xn);end在主函数中调用myDitFFT(xn)函数实现DIT-FFT并和直接DFT运算结果做对比:xn=[0,1,2,3,4,5,6,7];myDitFFT(xn);调用fft函数运算的结果:1至7列+++++--8列-调用myDitFFT(xn)函数运行的结果:输入到各存储单元的数据:01234567倒序后各存储单元的数据:04261537运算级次:1本级运算后各存储单元的数据:4-48-46-410-4运算级次:2本级运算后各存储单元的数据:1至7列+++-+++8列-运算级次:3本级运算后各存储单元的数据:1至7列+++++--8列-经对比可知DIT-FFT与直接DFT的运行结果完全相同。总结经过验证可发现DIT-FFT较直接DFT运算有着明显的优势,我们可以将这个函数运用在多个领域以简化运算,例如计算离散时间序列的卷积或计算IDFT时都可以应用到DIT-FFT算法,我感受到数字信号处理中科学思想的魅力。由于对设计思路的缺乏,我在设计程序时,在网络上查找了很多有关DIT-FFT的资料,经过学习他人的解决思路最后才整理出DIT-FFT的程序,在有些地方我自己理解的还不是很透彻,比如在实现数据倒序的程序我认为比较困难;当然即使自
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中班语言小狗汪汪
- 宁夏医疗卫生编制-中药类历年考试真题库-含答案解析
- 互联网+创新宝宝护理
- 安徽省合肥市三十五中2025年高三第二次模拟考试化学试卷含解析
- 慢性肾衰竭护理
- 地理-黑龙江省齐齐哈尔市2025届高三下学期第二次模拟考试(齐齐哈尔二模)试题和答案
- 酒店客房服务与管理
- 心理语言学课件
- 第3章 标志中的图形设计
- 教学常规管理包括哪些内容
- 2022年“华罗庚杯”全国初中数学预赛-竞赛试题及答案
- T∕ZZB 2763-2022 汽车用底盘横向稳定杆
- 减速机生产工艺流程图
- 金融科技课件(完整版)
- 网络直播行业税收检查指引
- 初中三年主题班会整体规划
- 山东物业服务星级标准对照表x
- 喷塑车间员工培训课件
- 医疗废物管理工作督查记录表常用
- 主要安全设施一览表201603
- 成都社区居委会街道办信息一览表
评论
0/150
提交评论