8点基于DIT的FFT的实现
数字信号处理中的对称性问题
数字信号处理中的对称性问题虞粉英;陆锦辉【摘要】数字信号处理是利用计算机或信号处理设备、采用数值计算方法对信号进行处理的过程.该文分析了离散时间傅里叶变换(DTFT)、离散傅里叶变换(DFT)、连续与非周期以及离散与周期的对称性,将N点序列的离散谱视为DTFT连续谱一个周期的采样,解决了利用计算机分析信号频谱的问题.通过对比分析DTFT和DFT 的对称性可知,将DFT的对称性应用到实序列DFT计算中,可减少约50%运算量.【期刊名称】《南京理工大学学报(自然科学版)》【年(卷),期】2018(042)005【总页数】7页(P615-621)【关键词】数字信号处理;奇偶对称性;共轭对称性;圆周共轭对称性【作者】虞粉英;陆锦辉【作者单位】南京理工大学电子工程与光电技术学院,江苏南京210094;南京理工大学电子工程与光电技术学院,江苏南京210094【正文语种】中文【中图分类】TN911.72数字信号处理(Digital signal processing,DSP)是利用计算机或通用(专用)的信号处理设备,采用数值计算的方法对信号进行处理的一门学科。
随着信息、通信、计算机科学与技术的迅速发展,数字信号处理理论得到快速发展,在信息与通信领域应用广泛。
文献[1]利用多路欠采样的方法对多分量线性调频(Linear frequency modulation,LFM)信号进行参数估计。
文献[2,3]研究了中继协作通信系统中数字信号处理算法的对称性问题,用于设计上下行链路。
数字信号处理理论在自动控制、生物医学、机械、能源、电力、纺织、仪器仪表等领域的应用也日益广泛[4,5]。
我国中东部经济发达地区电力供应相对紧缺,为此,在国家西电东输工程中,电力的转换与传输中存在大量的数据监测和监控,利用数字信号处理的方法就可以进行数据的自动分类、准确监控,从而实现高效率、高精度的电力转换与传输。
数字信号处理理论在电网储能优化配置中也有着重要作用[6]。
8点基于DIT的FFT的实现
8点基于DIT的FFT的实现长达1200字的回答确实有点困难,但我会尽力提供有关DIT (Decimation in Time)FFT(Fast Fourier Transform)的实现的详细信息。
请注意,由于篇幅限制,我将简要介绍DIT-FFT的基本原理和步骤,然后提供一个简单的Python实现示例来帮助您更好地理解该算法。
DIT-FFT是一种将离散时间复数序列(DTFT)计算转换为更高效算法的方法,用于快速计算离散傅立叶变换(DFT)。
它将输入序列分解为较短的子序列,并将DFT的计算分解为多个较小子问题的计算。
该算法的关键思想是利用DFT的对称性质和周期性来减少计算量。
DIT-FFT的实现主要分为四个步骤:1.反序重新排列输入序列:将长度为N的输入序列重新排列为N个采样点按照二进制位表示的反序排列的新序列。
这个步骤是为了确保在计算过程中能够正确地利用对称性和周期性。
2.蝶形计算:在这一步骤中,将输入序列分解为两个较短的子序列,并递归地计算每个子序列的DFT。
对于每个蝴蝶计算,需要计算两个序列的DFT值,并进行一些简单的数学运算。
3.合并结果:在完成蝶形计算后,将两个子序列的结果按照一定顺序合并形成最终的DFT结果。
4.重复步骤2和3,直到所有的子序列都被计算完毕。
下面是一个简单的Python实现示例,用于计算长度为N的输入序列的DIT-FFT:```pythonimport cmathdef dit_fft(x):N = len(x)if N <= 1:return xeven = dit_fft(x[0::2])odd = dit_fft(x[1::2])T = [cmath.exp(-2j * cmath.pi * k / N) * odd[k] for k in range(N // 2)]return [even[k] + T[k] for k in range(N // 2)] + [even[k] - T[k] for k in range(N // 2)]#示例使用x=[1,2,3,4,5,6,7,8]#输入序列X = dit_fft(x) # 计算DIT-FFTprint(X)```在这个示例中,输入序列`x`的长度为8,该序列将通过递归调用`dit_fft(`函数来计算其DFT值。
快速傅里叶变换 FFT
因为
,所以:
上式中X1(k)和X2(k)分别为x2(r)和x2(r)的N/2点DFT, 即
由于X1(k)和X2(k)均以N/2为周期,且 X(k)又可表示为:
,以
即将一个N点的DFT分解成为两个N/2点的DFT。 上述运算可用右下图来表示,称为蝶形运算符号。
从右图可知,要完成一 个蝶形运算需要进行一 次复数相乘和两次复数 相加运算。
对于象雷达、通信、声纳等需要实时处理的信号, 因为其运算量更大,所以无法满足信号处理的实时 性要求。迫切需要有新的算法。
二、DFT运算的特点
实际上,DFT运算中包含有大量的重复运算。在WN
矩阵中,虽然其中有N2个元素,但由于WN的周期
性,其中只有N个独立的值,即
,且
这N个值也有一些对称关系。总之,WN因子具有如 下所述周期性及对称性:
N 1
X (k) x(n)WNkn n0
x(n)
1 N
N 1
X (k)WNkn
k 0
k 0,1,2, , N 1 n 0,1,2, , N 1
计算X(k)的运算量:需要N2次复数乘法,N(N-1)
次复数加法。在N较大时计算量很大。
例如:N=1024时, 需要1,048,576次复数乘法, 即 4,194,304次实数乘法
1.对称性
2.周期性 由上述特性还可得出:
利用上述对称特性,可使DFT运算中有些项可以合 并,这样,可使乘法次数减少大约一半;利用WN 矩阵的对称性及周期性,可以将长序列的DFT分解 为短序列的DFT,N越小,运算量能够减少。 例如,对于四点的DFT,直接计算需要16次复数乘 法,根据上述特性可以有以下形5年,J. W. Cooley和J. W. Tukey巧妙应用DFT中 W因子的周期性及对称性提出了最早的FFT,这是 基于时间抽取的FFT。具有里程碑式的贡献(运算量 缩短两个数量级)
数字信号处理实验报告(西电)
数字信号处理实验报告班级:****姓名:郭**学号:*****联系方式:*****西安电子科技大学电子工程学院绪论数字信号处理起源于十八世纪的数学,随着信息科学和计算机技术的迅速发展,数字信号处理的理论与应用得到迅速发展,形成一门极其重要的学科。
当今数字信号处理的理论和方法已经得到长足的发展,成为数字化时代的重要支撑,其在各个学科和技术领域中的应用具有悠久的历史,已经渗透到我们生活和工作的各个方面。
数字信号处理相对于模拟信号处理具有许多优点,比如灵活性好,数字信号处理系统的性能取决于系统参数,这些参数很容易修改,并且数字系统可以分时复用,用一套数字系统可以分是处理多路信号;高精度和高稳定性,数字系统的运算字符有足够高的精度,同时数字系统不会随使用环境的变化而变化,尤其使用了超大规模集成的DSP 芯片,简化了设备,更提高了系统稳定性和可靠性;便于开发和升级,由于软件可以方便传送,复制和升级,系统的性能可以得到不断地改善;功能强,数字信号处理不仅能够完成一维信号的处理,还可以试下安多维信号的处理;便于大规模集成,数字部件具有高度的规范性,对电路参数要求不严格,容易大规模集成和生产。
数字信号处理用途广泛,对其进行一系列学习与研究也是非常必要的。
本次通过对几个典型的数字信号实例分析来进一步学习和验证数字信号理论基础。
实验一主要是产生常见的信号序列和对数字信号进行简单处理,如三点滑动平均算法、调幅广播(AM )调制高频正弦信号和线性卷积。
实验二则是通过编程算法来了解DFT 的运算原理以及了解快速傅里叶变换FFT 的方法。
实验三是应用IRR 和FIR 滤波器对实际音频信号进行处理。
实验一●实验目的加深对序列基本知识的掌握理解●实验原理与方法1.几种常见的典型序列:0()1,00,0(){()()(),()sin()j n n n n u n x n Aex n a u n a x n A n σωωϕ+≥<====+单位阶跃序列:复指数序列:实指数序列:为实数 正弦序列:2.序列运算的应用:数字信号处理中经常需要将被加性噪声污染的信号中移除噪声,假定信号 s(n)被噪声d(n)所污染,得到了一个含噪声的信号()()()x n s n d n =+。
8点基于DIT的FFT的实现
8点基于DIT的FFT的实现离散傅里叶变换(Discrete Fourier Transform,DFT)是一种将时域信号转换为频域信号的方法。
它是信号处理领域中最重要的数学工具之一,广泛应用于图像处理、音频处理、通信系统等领域。
离散傅里叶变换的计算方法之一是快速傅里叶变换(Fast Fourier Transform,FFT),它是一种高效的计算离散傅里叶变换的算法。
DIT-FFT(Decimation in Time Fast Fourier Transform)是一种基于分治思想的FFT实现方法,该方法将输入序列划分成两个子序列,分别进行FFT计算,并通过旋转因子进行连接。
在DIT-FFT算法中,输入序列的长度必须是2的整数次幂。
下面将详细介绍8点DIT-FFT的实现步骤:步骤1:读取输入序列首先,我们需要读取一个长度为8的输入序列,记为x[0]到x[7]。
步骤2:重新排列输入序列按照DIT-FFT算法的要求,需要对输入序列x进行重新排列。
对于长度为8的序列,重新排列的顺序如下所示:x[0],x[4],x[2],x[6],x[1],x[5],x[3],x[7]排列后的序列依次为x'[0]到x'[7]。
步骤3:递归计算FFT使用递归的方式计算子序列的FFT。
对于输入序列x'[0]到x'[3],以及x'[4]到x'[7],分别进行FFT计算。
其中,x'[0]到x'[3]可以视为长度为4的子序列,x'[4]到x'[7]可以视为长度为4的子序列。
步骤4:计算旋转因子根据FFT的定义,我们需要计算旋转因子 W = exp(-j*2*pi/N),其中,N 为输入序列的长度。
步骤5:连接子序列将计算得到的长度为4的子序列进行连接。
对于x'=[x'[0],x'[1],x'[2],x'[3]]和y'=[x'[4],x'[5],x'[6],x'[7]],连接操作可以表示为:x'[k]=x[k]+W^k*y[k]y'[k]=x[k]-W^k*y[k]其中,k为子序列的索引。
数字信号处理期末试题和答案解析
数字信号处理期末试题和答案解析WORD 格式整理专业知识分享数字信号处理卷⼀⼀、填空题(每空1分, 共10分)1.序列()sin(3/5)x n n π=的周期为。
2.线性时不变系统的性质有律、律、律。
3.对4()()x n R n =的Z 变换为,其收敛域为。
4.抽样序列的Z 变换与离散傅⾥叶变换DFT 的关系为。
5.序列x(n)=(1,-2,0,3;n=0,1,2,3), 圆周左移2位得到的序列为。
6.设LTI 系统输⼊为x(n) ,系统单位序列响应为h(n),则系统零状态输出y(n)= 。
7.因果序列x(n),在Z →∞时,X(Z)= 。
⼆、单项选择题(每题2分, 共20分)1.δ(n)的Z 变换是()A.1 B.δ(ω) C.2πδ(ω) D.2π2.序列x 1(n )的长度为4,序列x 2(n )的长度为3,则它们线性卷积的长度是()A. 3 B. 4 C. 6 D. 73.LTI 系统,输⼊x (n )时,输出y (n );输⼊为3x (n-2),输出为() A. y (n-2) B.3y (n-2) C.3y (n ) D.y (n )4.下⾯描述中最适合离散傅⽴叶变换DFT 的是()A.时域为离散序列,频域为连续信号B.时域为离散周期序列,频域也为离散周期序列C.时域为离散⽆限长序列,频域为连续周期信号D.时域为离散有限长序列,频域也为离散有限长序列5.若⼀模拟信号为带限,且对其抽样满⾜奈奎斯特条件,理想条件下将抽样信号通过即可完全不失真恢复原信号()A.理想低通滤波器 B.理想⾼通滤波器 C.理想带通滤波器 D.理想带阻滤波器 6.下列哪⼀个系统是因果系统()A.y(n)=x (n+2) B. y(n)= cos(n+1)x (n) C. y(n)=x (2n) D.y(n)=x (- n) 7.⼀个线性时不变离散系统稳定的充要条件是其系统函数的收敛域包括()A. 实轴B.原点C.单位圆D.虚轴8.已知序列Z 变换的收敛域为|z |>2,则该序列为()A.有限长序列 B.⽆限长序列 C.反因果序列 D.因果序列9.若序列的长度为M ,要能够由频域抽样信号X(k)恢复原序列,⽽不发⽣时域混叠现象,则频域抽样点数N 需满⾜的条件是 ( )A.N≥MB.N≤MC.N≤2MD.N≥2M10.设因果稳定的LTI系统的单位抽样响应h(n),在n<0时,h(n)= ( ) A.0 B.∞ C. -∞ D.1三、判断题(每题1分, 共10分)1.序列的傅⽴叶变换是频率ω的周期函数,周期是2π。
代码实现离散傅里叶变换8 点dft
《代码实现离散傅里叶变换8点dft》一、介绍离散傅里叶变换(Discrete Fourier Transform, DFT)是一种重要的信号处理方法,它可以将一个离散时间域信号转换为频域信号。
在数字信号处理领域中,DFT被广泛应用于音频处理、图像处理等领域。
本文将介绍如何使用代码实现8点DFT,通过代码实现,我们将了解DFT的原理和实现过程。
二、DFT原理DFT的数学表达式如下:其中,$x[n]$是输入的离散时间域信号,$X[k]$是变换后的频域信号,$N$表示采样点数,$n$表示时间域的采样点,$k$表示频域的采样点。
DFT的计算复杂度为$O(N^2)$,因此在实际应用中会使用快速傅里叶变换(Fast Fourier Transform, FFT)来加速计算。
三、8点DFT实现代码接下来,我们将使用Python来实现8点DFT的代码。
我们需要导入numpy库来进行数学运算:```pythonimport numpy as np我们定义一个函数来实现8点DFT的计算:```pythondef dft(x):N = len(x)X = np.zeros(N, dtype=npplex)for k in range(N):for n in range(N):X[k] += x[n] * np.exp(-1j * 2 * np.pi * k * n / N)return X```以上代码中,我们首先定义了一个长度为$N$、元素类型为复数的数组$X$,用于存储变换后的频域信号。
使用两层循环来计算DFT的每个频域采样点$X[k]$。
四、代码测试接下来,我们可以使用以下代码来验证我们实现的8点DFT函数:```pythonx = np.array([1, 2, 3, 4, 3, 2, 1, 0], dtype=npplex)X = dft(x)print(X)运行以上代码后,我们将得到变换后的频域信号$X[k]$。
FFT算法分析
FFT 算法分析FFT 算法的基本原理是把长序列的DFT 逐次分解为较短序列的DFT 。
按照抽取方式的不同可分为DIT-FFT (按时间抽取)和DIF-FFT (按频率抽取)算法。
按照蝶形运算的构成不同可分为基2、基4、基8以及任意因子(2n,n 为大于1的整数),基2、基4算法较为常用。
基2、DIT-FFT (按时间抽取):-1/21/212(21)/21/21/2/2()() ()()(2)(21)(2)(21)N knNn knknN Nn n N N k r k r NNr n N N kr k krN NN r n X k x n Wx n W x n W x r Wx r Wx r WWx r W ===--+==--====+=++=++∑∑∑∑∑∑∑偶数奇数000令/211/2(2)()N kr N r x r WX k -==∑,/212/2(21)()N krN r x r W X k -=+=∑,则有:1212()()()(/2)()()kN k NX k X k W X k X k N X k W X k =++=-蝶形运算单元如下所示:基2、DIF-FFT (按频率抽取):-10/211/2/21/21(/2)/21/2/21/2()() ()()()(/2)[()(/2)](2)[()(/2)](21)[()(N kn Nn N N kn knNNn n N N N kn k n N NNn n N kN kn NNn N rnN n X k x n Wx n Wx n W x n Wx n N W x n Wx n N WX r x n x n N W X r x n x n N =--==--+==-=-===+=++=++=+++=-+∑∑∑∑∑∑∑00000/21/2/2)]N n rnN N n W W -=∑则有:12()()(/2)()[()(/2)]nNx n x n x n N x n x n x n N W =++=-+蝶形运算单元如下所示:由前面的分析可知,DIT (按时间抽取)算法与DIF (按频率抽取)算法没有本质上的区别,只是复数加减法与旋转因子乘法的次序有区别,两种方法的运算量是一样的。
数字信号处理习题集大题与答案
1设序列x(n)={4,3,2,1} , 另一序列h(n) ={1,1,1,1},n=0,1,2,3 (1)试求线性卷积 y(n)=x(n)*h(n) (2)试求6点圆周卷积。
(3)试求8点圆周卷积。
解:1.y(n)=x(n)*h(n)={4,7,9,10,6,3,1}2.6点圆周卷积={5,7,9,10,6,3}3.8点圆周卷积={4,7,9,10,6,3,1,0}2二.数字序列 x(n)如图所示. 画出下列每个序列时域序列: (1) x(n-2); (2)x(3-n); (3)x[((n-1))6],(0≤n ≤5); (4)x[((-n-1))6],(0≤n ≤5);n12340.543210-1-2-3x(3-n)x[((n-1))6]n54321043210.5n12340.5543210x[((-n-1))6]3.已知一稳定的LTI 系统的H(z)为)21)(5.01()1(2)(111------=z z z z H试确定该系统H(z)的收敛域和脉冲响应h[n]。
解:0.52ReIm系统有两个极点,其收敛域可能有三种形式,|z|<0.5, 0.5<|z|<2, |z|>2 因为稳定,收敛域应包含单位圆,则系统收敛域为:0.5<|z|<211111213/25.013/4)21)(5.01()1(2)(--------=---=z z z z z z H )1(232)()5.0(34)(--+=n u n u n h n n4.设x(n)是一个10点的有限序列x (n )={ 2,3,1,4,-3,-1,1,1,0,6},不计算DFT ,试确定下列表达式的值。
(1) X(0), (2) X(5), (3)∑=9)(k k X,(4)∑=-95/2)(k k j k X eπ解:(1) (2)(3)(4)5. x(n)和h(n)是如下给定的有限序列 x(n)={5, 2, 4, -1, 2}, h(n)={-3, 2, -1 }(1) 计算x(n)和h(n)的线性卷积y(n)= x(n)* h(n); (2) 计算x(n)和h(n)的6 点循环卷积y 1(n)= x(n)⑥h (n); (3) 计算x(n)和h(n)的8 点循环卷积y 2(n)= x(n)⑧h (n); 比较以上结果,有何结论?14][]0[19===∑=n N n x X W 12][][]5[119180510-=-===⎩⎨⎧-=∑∑====奇偶奇数偶数n n n n n n x n x X n n W20]0[*10][][101]0[99===∑∑==x k X k X x k k 0]8[*10][][101]))210[((][]))[((2)10/2(92)10/2(9010)/2(===-⇔--=-=-∑∑x k X ek X ex k X e m n x k j k k j k m N k j N πππ解:(1)5 2 4 -1 2-3 2 15 2 4 -1 210 4 8 -2 4-15 -6 -12 3 -6-15 4 -3 13 -4 3 2y(n)= x(n)* h(n)={-15,4,-3,13,-4,3,2}(2)5 2 4 -1 2-3 2 15 2 4 -1 210 4 8 -2 4-15 -6 -12 3 -6-15 4 -3 13 -4 3 22-13 4 -3 13 -4 3 2y1(n)= x(n)⑥h(n)= {-13,4,-3,13,-4,3}(3)因为8>(5+3-1),所以y3(n)= x(n)⑧h(n)={-15,4,-3,13,-4,3,2,0}y3(n)与y(n)非零部分相同。
8点基于DIT的FFT的实现
8点基于DIT的FFT的实现离散傅立叶变换(Discrete Fourier Transform,DFT)是一种非常重要的数字信号处理技术,它在频域中将时域信号转换为频域信号。
傅立叶变换的一种高效实现是快速傅立叶变换(Fast Fourier Transform,FFT),它是一种基于迭代的算法,具有较低的计算复杂度。
在本文中,我们将介绍DIT(Decimation In Time)算法的FFT实现,它是一种经典的FFT实现方法。
DIT算法是基于分治原则的一种FFT算法,它将一个N点的DFT拆分成两个N/2点的DFT,并通过迭代的方式进行计算。
DIT算法的核心思想是将输入序列分成奇数索引和偶数索引两部分,然后对它们分别进行N/2点的DFT计算。
最后将得到的结果进行组合,得到最终的N点DFT。
下面是DIT算法的具体步骤:1. 将输入序列划分为奇数索引和偶数索引两个部分。
假设输入序列为x[0], x[1], ..., x[N-1],则分别得到奇数索引部分x_odd[0],x_odd[1], ..., x_odd[N/2-1]和偶数索引部分x_even[0],x_even[1], ..., x_even[N/2-1]。
2. 对奇数索引部分x_odd进行N/2点的DFT计算。
使用递归调用FFT算法计算得到奇数索引部分的频域序列X_odd[0], X_odd[1], ..., X_odd[N/2-1]。
3. 对偶数索引部分x_even进行N/2点的DFT计算。
使用递归调用FFT算法计算得到偶数索引部分的频域序列X_even[0], X_even[1], ..., X_even[N/2-1]。
4. 根据蝴蝶运算(Butterfly Operation)的原理,将得到的X_odd 和X_even合并成N个频域样本。
具体操作是,对于每个k=0, 1, ..., N/2-1,计算X[k] = X_odd[k] * W^k + X_even[k]其中W是复数旋转因子,计算公式为W=e^(-j2π/N)。
8点基于DIF-FFT课程设计
1数字信号处理简介1.1 数字信号处理概念相对于模拟信号,数字信号是时间、幅值都离散的信号,数字信号处理就是通过计算机或专用处理设备,用数值计算等数字方式对数字信号进行各种处理,将数字信号变换成符合要求的某种形式。
数字信号处理主要包括数字滤波和数字频谱分析两大部分。
例如,对数字信号进行滤波,限制其频带或滤除噪声和干扰,以提取和增强信号的有用分量;对信号进行频谱分析或功率分析,了解信号的频谱组成,以对信号进行识别。
当然,凡是用数字方式对信号进行滤波,变换,增强,压缩,估计和识别等都是数字信号处理的研究范畴。
数字信号处理在理论上所涉及的范围极其广泛。
数字领域中的微积分,概率统计,随机过程,高等代数,数值分析,复变函数和各种变换(如傅里叶变换,Z变换,离散傅里叶变换,小波变换等)都是它的基本工具,网络理论,信号与系统等则是它的理论基础。
在科学发展上,数字信号处理又和最优控制,通信理论等紧密相连,目前已成为人工智能,模式识别,神经网络等新兴学科的重要理论基础,其实现技术又和计算机科学和微电子技术密不可分。
因此,数字信号处理是把经典的理论基础体系作为自身的理论基础,同时又使自己成为一系列新兴学科的理论基础。
1.2数字信号处理的特点及实现方法与模拟信号处理相比,数字信号处理具有高精度、高稳定性、灵活性好、易于大规模集成等显着的优点。
数字信号处理的主要研究对象是数字信号,且采用数值运算的方法达到处理的目的。
数字信号处理的实现方法基本上可以分为软件实现方法、硬件实现方法和软硬件相结合的实现方法。
数字信号处理的理论、算法和实现方法三者是密不可分的。
2 FFT 算法介绍2.1 DFT 的定义对于有限长离散数字信号{x[n]},0 ≤ n ≤ N-1,其离散谱{X[k]}可以由离散傅氏变换(DFT )求得。
DFT 的定义为:21[][]N jnk Nn X k x n eπ--==∑,k=0,1,…N -1通常令2jNN eW π-=,称为旋转因子。
FFT算法DSP实现(DIT基2FFT运算流图)
2.各种FFT算法原理介绍与比较
现有的FFT算法包括针对N=2L点的基2FFT、基4FFT、分裂基FFT以及针对N不等于2L 的混合基FFT。其中每种算法又可以分为时域抽取算法(DIT)和频域抽取算法(DIF) 。下 面分别介绍它们各自的特点并对它们进行比较,导出各自的使用场合。
2.1 DIT 和 IDF 基 2 FFT 算法
这样就把一个 N 点 DFT 转换为 基 2FFT 一级分解框图所示:
N N 个基本碟形运算和 2 个 点 DFT 运算, 如时域抽取 2 2
-1-
x(2r)
N/2 点 DFT
k WN
X(k)
x(2r+1)
N/2 点 DF
-1
X(k+
N ) 2
图 1 时域抽取基 2FFT 一级分解框图
n = n1r2 + n0 ,即将 x(n)分为 r2 个 r1 点的序列,然后做 r2 个 r1 点的 DFT 得到 X 1 (k0 , n0 ) ;将
n0 k0 后,再做 r1 个 r2 点的 DFT 得到 X 2 (k0 , k1 ) ,最后进行 r2 进制 X (k0 , n0 ) 乘以旋转因子 WN
对框图中每个 N/2 点和 N/4 点 DFT 继续进行同样的分解,直到只有最基本的 2 点 DFT 和 4 点 DFT 为止,就得到了频域抽取分裂基 FFT。由于频域抽取,造成了输出数据的二进 制倒序。事实上分裂基的到序算法与基二的是一样的,可以使用同样的程序。 分裂基的每个 L 形有两个复数乘法运算,所以 N 点分裂基 FFT 乘法个数是 L 形个数的
FFT 算法的研究与 DSP 实现
王靖琰 1,王靖斌 2
2
中国科学院上海应用物理研究所,上海 (201800) 山东农业大学信息工程与技术学院,泰安 (271018)
第8章FFT设计
第8章 FFT设计
参数“Real Value”设为“0” 参数“Imaginary Value”设为“127” 对于W1_9、W3_11 参数“Real Value”设为“90” 参数“Imaginary Value”设为“90”
X0、X1、X2、X3、X4、X5、X6、X7模块:(Complex to Real-Imag)
第8章 FFT设计
x(0)
x(4) -1
x(2)
W80
-1
x(6)
W82
-1
W80 x(1)
W81
x(5)
-1
x(3)
W80
W82
-1
W82
W83
x(7)
-1
-1
图8-2 N=8时FFT算法的信号流图
x(0) x(4) x(2)
x(6)
-1
x(1)
-1
x(5)
x(3) -1
-1
x(7)
第8章 FFT设计
第8章 FFT设计
W0_6、W2_5、W0_4、W2_7模块:(Complex Constant) 库:Altera DSP Builder中Complex Signals库 参数“Bus Type”设为“signed Integer” 参数“[number of bits].[]”设为“16” 参数“[].[number of bits]”设为“0” 对于W0_6、W2_5 参数“Real Value”设为“1” 参数“Imaginary Value”设为“0” z对于W0_4、W2_7
库:Altera DSP Builder中Bus Manipulation库 参数“Bus Type”设为“signed Integer” 参数“[number of bits].[]”设为“16”
数字信号处理期末重点复习答案
1、对模拟信号(一维信号,是时间的函数)进行采样后,就是 离散 信号,再进行幅度量化后就是 数字信号。
2、若线性时不变系统是有因果性,则该系统的单位取样响应序列h(n)应满足的充分必要条件是 当n<0时,h(n)=0 。
3、序列)(n x 的N 点DFT 是)(n x 的Z 变换在 单位圆 的N 点等间隔采样。
4、)()(5241n R x n R x ==,只有当循环卷积长度L ≥8 时,二者的循环卷积等于线性卷积。
5、已知系统的单位抽样响应为h(n),则系统稳定的充要条件是 ()n h n ∞=-∞<∞∑6、用来计算N =16点DFT ,直接计算需要(N 2)16*16=256_次复乘法,采用基2FFT 算法,需要__(N/2 )×log 2N =8×4=32 次复乘法。
7、无限长单位冲激响应(IIR )滤波器的基本结构有直接Ⅰ型,直接Ⅱ型,_级联型_和 并联型_四种。
8、IIR 系统的系统函数为)(z H ,分别用直接型,级联型,并联型结构实现,其中 并联型的运算速度最高。
9、数字信号处理的三种基本运算是:延时、乘法、加法10、两个有限长序列 和 长度分别是 和 ,在做线性卷积后结果长度是__N 1+N 2-1_。
11、N=2M 点基2FFT ,共有 M 列蝶形,每列有N/2 个蝶形。
12、线性相位FIR 滤波器的零点分布特点是 互为倒数的共轭对13、数字信号处理的三种基本运算是: 延时、乘法、加法14、在利用窗函数法设计FIR 滤波器时,窗函数的窗谱性能指标中最重要的是___过渡带宽___与__阻带最小衰减__。
16、_脉冲响应不变法_设计IIR 滤波器不会产生畸变。
17、用窗口法设计FIR 滤波器时影响滤波器幅频特性质量的主要原因是主瓣使数字滤波器存在过渡带,旁瓣使数字滤波器存在波动,减少阻带衰减。
18、单位脉冲响应分别为 和的两线性系统相串联,其等效系统函数时域及频域表达式分别是h(n)=h1(n)*h2(n), =H1(ej ω)×H2(ej ω)。
FFT实现
1.引言:离散傅立叶变换(DFT)及快速傅立叶变换(FFT)傅立叶变换就是在以时间为自变量的信号函数和以频率为自变量的频域函数之间的一种可逆变换关系,非周期的连续时间信号x(t)与其对应频域信号X(j Ω)之间的傅氏变换关系为⎰∞∞-Ω-=Ωdt e t x j X t j )()( (1-1)逆变换⎰∞∞-ΩΩΩ=d e j X t x t j )(21)(π (1-2)在数字信号处理系统中,时域信号和频域信号的处理都只能以离散值进行处理,这时由于时域信号的采样造成了对应频域信号的周期延拓,同样频域信号的采样也造成了时域信号的周期延拓,这种频域时域均为离散信号的变换是傅立叶变换的特殊形式,称为离散傅立叶级数变换。
由于变换信号均为周期形式,不便于计算,所以在实际应用中仅取一个周期中的内容,从而得到了一个周期的时域信号和频域信号之间关系)10()()]([)(10-≤≤==∑-=N k Wn x n x DFT k X N n kn N (1-3) )10()(1)]([)(10-≤≤==∑-=-N n Wk X N k X IDFT n x N k kn N (1-4) 以上两式称为有限长序列的离散傅氏变换对,1-3式称为离散傅立叶变换(DFT ),1-4式称为离散傅立叶逆变换(IDFT )。
离散傅立叶变换不仅在理论上有着重要的意义,实际应用中,频域分析也拓展了数字信号处理的方式。
前面的离散傅立叶变换对中N j N eW π2-=,而且一般x (n )和X (k )均为复值,按照复数形式展开后])}Re[)](Im[]Im[)]((Re[]Im[)](Im[]Re[)]({(Re[)(10kn N kn N kn N kn N N n W n x W n x j W n x W n x k X ++-=∑-= (1-5) 可以看出,在N 点的DFT 中对于X (k )的每个k 对应需要进行4N 次实数乘法和(4N-2)次实数加法,对于N 点来说,全部变换需要4N 2次实数乘法和N (4N-2)次实数加法,因此,直接计算DFT 的运算量近似正比于N 2,N 值增加时,运算量增加很快,这对于快速应用来说是无法接受的,所以需要改进DFT的计算方法,减少其运算量。
FFT至简设计法实现法_FFT算法_蝶形运算
DIT-FFT 至简设计实现法1、 DIT-FFT 算法的基本原理有限长序列x n 的N 点DFT 定义为:X (k )=∑x (n )W N Kn N−1n=0,式中W N=e−j2πN。
DFT 在实际应用中很重要,但是如果直接按DFT 变换进行计算,当序列长度N 很大时,计算量会非常大,所需时间也很长,因此常用的是DFT 的一种快速计算算法,简称FFT 。
最常用的FFT 算法是基于时间抽取的基2-FFT 算法和基于频率抽取的基2-FFT 算法,这种算法的特点在于FFT 会把一次大的DFT 分割成几个小的DFT ,这样递归式地细分下去,例如有8个采样点的FFT ,首先会把最外层的8点运算分成两个4点FFT 的奇偶组合,第二层FFT 又分成四个两点FFT 的奇偶组合,并且由此计算出的频谱中很有趣的一点在于对于实数输出的数组,后面一半和前面一半正好对称相同,对于虚数输出的数组,后面一半是前面数组对称后乘上负1,因此,我们只需要算出FFT 的一半即可求出全部。
本设计讨论的是基于至简设计法实现按时间抽选的基2-FFT 算法(即DIF-FFT )实现过程,支持N 由8到1024。
图 1按时间抽取的基2-FFT 算法蝶形运算流图(N=8)2、蝶形运算至简实现过程2、1 模块划分图 2蝶形运算模块框图本模块包括三个RAM模块(RAM1,RAM2,RAM3)与一个DFT模块,各模块功能如下:1)RAM1模块:在开始进行蝶形运算前,全部采样点(如图1所示的x(0)、x(4)、x(2)、x(6)、x(1)、x(5)、x(3)、x(7))已经按照倒位序二进制的地址依次存储在RAM1模块中,即地址0保存了采样点x(0),地址1保存了采样点x(4)。
选用双端口RAM1可以同时对两点采样数据(如图1的x(0)、x(4))进行读、写操作。
2)RAM2模块:RAM2模块也是采用双端口输入输出,可同时对两点数据进行读、写操作。
数字信号处理 基于8点的dif-fft变换
数字信号处理1、设计目的及意义(1)、掌握实现基2-DIF-FFT算法的方法(2)、掌握Maltlab的基本使用方法,初步具有使用Maltlab编程的能力2、设计原理2.1 FFT简介离散傅里叶变换(DFT)正变换: n=0,1,2…,N-1逆变换: n=0,1,2…,N-12.2 按频率抽选的FFT算法FFT算法主要有两种,按时间抽选的FFT的算法(DIT-FFT)和按频率抽选的FFT算法(DIF-FFT)。
这里主要介绍DIF-FFT。
DIF-FFT算法是将输入序列x(k)分成前后两个部分。
由于,则k为偶数k为奇数所以把k按奇数和偶数分, r=0,1,…N/2-1K为偶数 k为奇数将X(k)分为两部分:令,,可得,r=0,1,2,…,N/2-1由此可得频率抽选法蝶形运算单元,如图2.1所示图2.1频率抽选法蝶形运算单元这样可以把一个N点DFT分解为两个N/2点DFT的组合,两个N/2点DFT还可以继续分解,设N=2M,则经过M-1次分解,最后可以分解成为N/2个两点DFT,可以由一个蝶形运算来求解。
例如8点DIF-FFT蝶形运算图如图2.2图2.2 8点DIF-FFT运算流图。
输出序列的排列规律不是从小到大按顺序的,而是按照倒叙规则排序的,即先将0-7转换为二进制数,然后将二进制数左右倒序,再转为十进制就可以得到新的数列,即:0,4,2,6,1,5,3,7。
2.3 程序流程图开始设定输入序列求出蝶形运算级数m=3循环mm=1到3级蝶形运算求该级旋转因子下标Nm循环该级1到2mm-1组蝶形运算循环该组1到23-mm个蝶形运算计算一个蝶形运算单元序列倒序后绘图结束YY Y N N N图2.3 程序流程图3、程序及结果3.1 直接调用FFT函数源程序以下是直接调用Matlab自带的FFT函数计算的源程序,其输入序列为x=[0 2 4 6 0 2 4 6],求出FFT结果y=X(k)后对其幅值和原序列进行绘图。
基2-FFT
数字信号处理补充快速傅里叶变换授课教师:胡双红QQ:79274544长沙理工大学计算机与通信工程学院DFT 设x(n)改进途径 W nk的对称性利用这些特性,我们可以1 合并DFT运算的某些项2 使长序列的DFT分解为短序列的DFT 由此得到两类快速傅里叶变换(FFT) 1按时间抽取(DIT-FFT)2按频率抽取(DIF-FFT)DIT-FFT()()()2121212221N N r krk x r Wx r W−−+=++∑∑但是,要用考虑系数N 将X(k)N N W W=−按时间抽取,将一个x1(0)=x(0)X1(0)X(0)运算量分析分解后,共需要N/2次蝶形运算和两个N/2点DFT 每个蝶形运算需要一次复数乘法和两次复数加法每个N/2点DFT 需要(N/2)2次复数乘法,N/2(N/2-1)次复数加法分解后,共需要(N/2)2×2+N/2 N 2/2次复数乘法和N(N/2-1)+N=N 2/2次复数加法分解后,运算量约减小一半,因此我们可进一步把序列进行分解≈将每个同理:X2(k)也可进行同样的分解:x 3(0)=x 1(0)=x(0)N/4 点X 3(0)X(0)X 1(0)奇偶分解过程中序列标号的变化以N=8点的DFT 为例:输入序列x(n)按偶数点与奇数点第一次分解为两个N/2点序列偶序列x(2r)=x 1(r), 奇序列x(2r+1)=x 2(r) ,其中r=0,1,2…,N/2-16420n=2r 3210r7531n=2r+13210r第二次分解把每个N/2点的子序列按其奇偶分解为两个N/4点子序列偶序列中的偶数序列偶序列中的奇数序列x1(2l)=x3(l) x1(2l+1)=x4(l)奇序列中的偶数序列奇序列中的奇数序列x2(2l)=x5(l) x2(2l+1)=x6(l)4n=2r20r=2l 10l 62n=2r31r=2l+110l 51n=2r+120r=2l10l 73n=2r+131r=2l+11l最后剩下的是4个2点DFT X 3(k), X 4(k), X 5(k), X 6(k), k=0,1()()()/4133/4013/4,0,1N lk N l lk N l X k x l Wx l Wk −=====∑∑()()()()()()()()()()3323133230010410104X x W x x x X x W x x x =+=+=+=−这种方法的每一步分解都是按输入序列在时间上的次序是属于偶数还是奇数来进行的,故称为“按时间抽取法”由DFT 计算公式得:即:x 3(0)=x 1(0)=x(0)X 3(0)X(0)X 1(0)二、运算量DFT 与FFT 算法运算量比较表113.82304262144512204.85120104857610246410246553625636.64481638412821.419240966412.8801024328.03225616 5.412648441644142N 2/(log 2N ×N/2)log 2N ×N/2N 2N1、原位运算(同址运算)由图可见,第m-1列的两个节点k和j进行蝶形运算后,得到结果为第m列的k,j节点,与其他节点变量无关因而可采用原位运算:第m-1列的N个数据送到存储器后,经蝶形运算,其结果为第m列数据,以蝶形为单位仍存储在同组存储器中,准备下一列蝶形运算优点:可节省存储单元,降低设备成本2、倒位序规律按原位计算时,输出3、倒位序的实现通过变址运算得到:在原来自然顺序时存放x(n)的单元(n=n 2n 1n 0),现在存放, ()x n 012n n n n =7111111730111106510110151001100461100113201001024100001100000000倒位序顺序倒位序数二进制数自然顺序x(7)x(3)x(5)x(1)x(6)x(2)x(4)x(0)倒位序变址x(7)x(6)x(5)x(4)x(3)x(2)x(1)x(0)自然顺序输入A(7)A(6)A(5)A(4)A(3)A(2)A(1)A(0)存储单元倒位序的变址处理为保证只调换一次,避免已调换再次调换回到原状,我们在调换之前必须规定约束条件012210,n n n n n n n n >>即4、蝶形运算两节点的距离第一级两个蝶形的两节点间的距离为1第二级两个蝶形的两节点间的距离为2第三级两个蝶形的两节点间的距离为4依此类推第m级两个蝶形的两节点间的距离为2m-15、W Nr 的确定对第m 级运算,一个DIT 蝶形运算的两节点“距离”为2m-1,蝶形输出()()()()()()1111111222m r m m m N m m r m m m NX k X k X k WX k X k X k W−−−−−−−=+++=−+r 的确定:把蝶形运算的第一个节点k 表示为L 位二进制数把此二进制数乘上2L-m ,即为r6、存储单元由于是原位运算,只需有输入序列x(n) (n=0,1,…,N-1)的N个存储单元,加上系数W N r(r=0,1,…,N/2-1)的N/2个存储单元算法的其它形式流图对于任何流图,只要保持各节点所连的支路及其传输系数不变,不论节点怎么排列所得流图等效DIT-FFTX 1(0)X(0)x(0)X 3(0)输入自然顺序、输出自然顺序的X(0)X 1(0)x(0)X 3(0)几何形状的X1(0)X(0) x(0)X(0)几何形状的x(0)X3(0)X1(0)X(0)一、算法原理因为∑i ()()()2 =++X r x n x n N W 2/2n r⎡⎤令则21N−⎫N/2x(0)进一步分解x(0)x(0)N/4点x3(0)N=8x(0)x1(0)x3(0)X(0)每级计算都由三、蝶形运算两节点间的距离第一级两个蝶形的两节点间的距离为4 第二级两个蝶形的两节点间的距离为2 第三级两个蝶形的两节点间的距离为1依此类推第m级两个蝶形的两节点间的距离为2L-m=N/2m四、对第m级运算,一个DIT蝶形运算的两节点“距五、DIT-FFT与DIF-FFT的异同不同点:基本蝶形不同DIT的基本蝶形先复乘后减法DIF的基本蝶形先减法后复乘相同点:运算量相同都可进行原位运算联系:把DIT的基本蝶形加以转置,就得到DIF的基本蝶形转置:将流图的所有支路方向都反向,并交换输入输出,但节点权值不变DITIDFT 上述由1/2作业:画出N=16的基2DIT-FFT和DIF-FFT流图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目:8点基于DIT的FFT的实现初始条件:具备Matlab编程能力;熟悉基于DIT的FFT的实现原理;提供编程所需要的计算机一台。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、编写一个8点的基于DIT的FFT函数,不能使用matlab自带的FFT实现函数;2、并调用该函数实现16点的FFT运算,用matlab自带函数对运行结果结果进行验证;3、完成符合学校要求的设计说明书。
时间安排:一周,其中3天程序设计,2天程序调试指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (I)1 概述 (1)1.1 快速傅立叶变换(FFT)简介 (1)1.2 MATLAB简介 (2)2 直接计算DFT的问题及改进 (3)2.1直接计算DFT的运算量 (3)2.2 改进措施 (4)3 按时间抽选的基-2FFT算法(DIT-FFT) (5)3.1 DIT-FFT算法原理 (5)3.2 DIT-FFT的运算量 (11)3.3 DIT-FFT算法的特点 (12)3.4 N=16时的DIT-FFT算法 (14)4 MATLAB程序代码 (15)4.1 N=8点DIT-FFT代码 (15)4.2 N=16点DIT-FFT代码 (16)5 MATLAB仿真结果及验证 (17)5.1 DIT-FFT函数调试 (17)5.2 DIT-FFT函数运行结果 (18)5.3调用系统函数验证 (19)6 心得体会 (21)参考文献 (22)摘要此次课设目的是利用MATLAB实现8点基于DIT的FFT的仿真,不使用MATLAB 自带的FFT实现函数。
本文先就直接计算傅立叶变换(DFT)存在的问题进行讨论,之后详细介绍了快速傅立叶变换(FFT)的原理以及推导过程,给出了8点FFT的蝶形流图以及MATLAB仿真的程序代码,并通过调用该函数代码计算16点的FFT。
最后给出了仿真调试结果和此次课设的总结。
关键词:FFT;MATLAB;仿真AbstractThe aim of this Course Design is to use MATLAB to achieve 8-point DIT-FFT simulation, and can not use the built-in MATLAB FFT function to realize. The beginning of this article discuss the problems of direct calculation of the Fourier transform (DFT) , and then introduces the principle of Fast Fourier Transform (FFT) and the process of derivation. Then there is given butterfly flow diagram of 8-point FFT and the MATLAB simulation program code, and realize 16-point FFT calculation by calling the function code. Finally, enumerate the simulation results and make the summary of this curriculum design.Keywords: FFT; MATLAB; Simulation1 概述1.1 快速傅立叶变换(FFT)简介傅立叶变换,表示能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。
傅立叶变换是一种分析信号的方法,它可分析信号的成分,也可用这些成分合成信号。
傅立叶变换是声学、语音、电信和信号处理等领域中一种重要的分析工具。
在不同的研究领域,傅立叶变换具有多种不同的变体形式,如连续傅立叶变换和离散傅立叶变换。
离散傅立叶变换(DFT),是傅立叶变换在时域和频域上都呈现离散的形式,将时域信号的采样变换为在离散时间傅立叶变换(DTFT)频域的采样。
在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。
即使对有限长的离散信号作DFT,也应当将其看作经过周期延拓成为周期信号再作变换。
有限长序列可以通过离散傅立叶变换(DFT)将其频域也离散化成有限长序列。
但其计算量太大,很难实时地处理问题,因此引出了快速傅立叶变换(FFT)。
1965年,Cooley和Tukey提出了计算离散傅立叶变换(DFT)的快速算法,将DFT的运算量减少了几个数量级。
从此,对快速傅立叶变换(FFT)算法的研究便不断深入,数字信号处理这门新兴学科也随FFT的出现和发展而迅速发展。
根据对序列分解与选取方法的不同而产生了FFT的多种算法,基本算法是基2DIT和基2DIF。
FFT在离散傅立叶反变换、线性卷积和线性相关等方面也有重要应用。
计算离散傅立叶变换的快速方法,有按时间抽取的FFT算法(DIT-FFT)和按频率抽取的FFT算法(DIF-FFT)。
前者是将时域信号序列按偶奇分排,后者是将频域信号序列按偶奇分排。
它们都借助于的两个特点:一是周期性;二是对称性。
这样,便可以把离散傅立叶变换的计算分成若干步进行,计算效率大为提高。
快速傅立叶变换(FFT),是离散傅立叶变换的快速算法,它是根据离散傅立叶变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。
它对傅立叶变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。
1.2 MATLAB简介MATLAB是美国Math Works公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink 两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。
是由美国Math Works公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JA V A的支持。
优势特点:1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;2) 具有完备的图形处理功能,实现计算结果和编程的可视化;3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。
2 直接计算DFT 的问题及改进DFT 在数字信号处理中有着重要的作用。
然而直接计算DFT 的运算量非常大,它与序列长度的平方成正比,因此制约了DFT 的应用。
快速傅立叶变换(Fast Fourier Transform,FFT )是实现DFT 的一种快速算法。
2.1 直接计算DFT 的运算量离散傅立叶变换对为:正变换: ∑-===10)()]([)(N n nkN W n x n x DFT k X , 1...,2,1,0-=N n (2.1.1)反变换: Wnk NN k k X Nk X IDFT n x --=∑==1)(1)]([)( , 1,...,2,1,0-=N k (2.1.2)2.2 改进措施FFT 主要利用DFT 旋转因子的周期性与对称性来减少运算量:周期性: W W W nk N NkN n NnkN )()(++== (2.2.1)对称性: W W n N k Nnk nk N )(-N W *)(-== (2.2.2) 利用周期性与对称性,一方面可以在DFT 的运算过程中把有些项进行合并,另一方面可以把长序列的DFT 分解成若干短序列的DFT 。
因为DFT 的运算量与变换长度的平方成正比,如果可以把一个长序列DFT 分解成若干短序列DFT 再进行计算,就可以大大减少运算量。
3 按时间抽选的基-2FFT 算法(DIT-FFT)常用的FFT 算法有两大类,一类是按时间抽取的FFT 算法(简称DIT-FFT ),另一类是按频率抽取的FFT 算法(简称DIF-FFT )。
最早提出的基-2FFT 算法,使DFT 的运算效率提高了1~2个数量级,从而为DFT 由理论研究到实际应用创造了条件。
3.1 DIT-FFT 算法原理按时间抽取的FFT 算法基本思想是:时域下的序列x(n)按序列n 的奇偶分组,频域下序列X(k)按序列k 前后分组。
有限长序列x(n),设其长度2LN =,L 为整数,若不满足该条件,加零补足。
显然N 为偶数,可以按序列序号分为奇、偶两组序列,长度分别为N/2,如:)}1(),...,1(),0({)(-=N x x x n x按n 的奇偶分组,对x(n)重新排列,得:2)}-x (N x (2),...,|x(0),)1(),...,3(),1({-N x x x令12/,...,2,1,0)},1(),...,2(),0({)2(-=-=N r N x x x r x (3.1.1) 12/,...,2,1,0)},1(),...,3(),1({)12(-=-=+N r N x x x r x (3.1.2)再令)2()(1r x n x = (3.1.3) )12()(2+=r x n x (3.1.4)N 点序列x(n)的DFT 为:W W W W W W W W rkNN r kNrkN N r kr NN r rkN N r nkNn nkN n nkNN n r x r x r x r x n x n x n x n x DFT k X 212/02212/01)12(12/0212/010)()()12()2()()()()]([)(∑∑∑∑∑∑∑-=-=+-=-=-=+=++=+===为奇数为偶数因为3.1.5)所以)()()()()(2112/02/212/02/1k X k X r x r x k X W W W W kN N r rkN rkNN r rk N +=+=∑∑-=-= (3.1.6)其中)(1k X 与)(2k X 分别是)(1n x 与)(2n x 的N/2点的DFT ,即:3.1.7)式(3.1.6)把一个N 点的DFT 分解成了两个N/2点的DFT 的组合,但是)(1k X 与)(2k X 分别是)(1n x 与)(2n x 的N/2点的DFT ,r 与k 的取值满足r,k=0,1,2,...,N/2-1,而X(k)是一个N 点的DFT ,因此式(3.1.7)只计算X (k)前N/2点的值。