FFT程序,输入是一组复数,输出也是一组复数,想问一下输入到底应该输入什么,输出的复数的含义是什么?给定一组序列的抽样值,如何用FFT确定它的频率? 首先,fft函数出来的应该是个复数,每一个点分实部虚部两部分。假设采用1024点fft,采样频
你对这个回答的评价是?
我计划将分红两章讲解“快速傅里叶变换与快速数论变换”。这一篇博客是我在研究和学习了3~4天的FFT和FNT的基础之上诞生的。
本片博客主要讲解FFT和FNT的最基本的知识。
FFT和FNT是用来解决数个多项式相乘的问题的。
秦九韶算法(在西方叫作“霍纳法则”)能在 的时间内计算 次多项式的值
则 ,此方程在实数集上没有解。因而,咱们再设置一个复数集。
在复数集上,咱们设 ,因而此方程也有解。其中,咱们把 叫作虚数
咱们把实数+虚数结合体叫作复数,好比:
所以,有结论:两个复数相乘:模长相乘,辐角相加
这个复数能够用来旋转一个复数.
这就是著名的欧拉公式。
该多项式在数学上有两种表示方式,分别为:系数向量法、点值法
注意,在这里,咱们用任意一个变量取代 ,也就是把上面这些式子看成形式幂级数(形式幂级数的概念在母函数中提到过)
所谓的系数向量法就是利用多项式中未知数前的系数构成的一组系数向量(咱们将它当作是列向量)
若采用系数向量法来表示两个多项式相乘,
点值法的本质就是取 个样本,从而构成一个 阶方阵。而后就能够惟一肯定一组系数向量,从而惟一肯定一个多项式
性质一:复数集的基数是 ,也就是有 个这样的复数
性质二:复数集中的复数均匀分布在复平面上的单位圆上,将单位圆均匀的分红了 个部分
性质三:复数集中的各个复数的模长为
性质五:由性质四,获得复数集中各元素分别为:
性质五:复数集是一个群,知足如下恒等式
备注:折半引理是FFT得以成立的充要条件
STEP 3:将乘好之后的点值转换为新的系数向量C------
所以,能够获得 FFT 的时间复杂度为
咱们将STEP 1 叫作 DFT(即离散傅里叶变换),将STEP 2 叫作 IDFT(即逆离散傅里叶变换)
接下来,我将分红了两个部分(DFT和IDFT)来说解FFT是怎么算的
是将系数向量转化为点值,是求值运算
设用点值法表示为
从而获得一组新的点值式:,记做 (未知)
根据这个结论,就能使得原问题的规模缩小到原来的一半,所以, 的时间复杂度就是
以 为例子,观察下图中系数向量在分治法中的变化:
STEP 3 : 倒数第二位为0的在左树,倒数第二位为1的在右树
STEP 4 : 倒数第三位为0的在左树,倒数第三位为1的在右树
再观察 STEP 4 中个系数的顺序,咱们发现:
0 |
0 |
将 STEP 4 中个系数的二进制翻转后的数是逐一递增的。(咱们把这个叫作逆序置换)
咱们假设 是 将 的二进制翻转以后的数,那么咱们就能够获得如下的伪代码:
是将点值转化为系数向量,是插值运算
写成矩阵的形式就是:
咱们发现,使用 次单位复数根能够简化多项式的计算,可是复数的计算不免会产生精度的偏差。在对大整数的多项式的计算过程当中就会失去优点,所以,咱们将采用一种新的方式来代替了原来的 次单位复数根。
根据原根的特色,咱们设一个素数 ,
第3章 离散傅里叶变换(DFT) 3.1 离散傅里叶变换的定义 3.2 离散傅里叶变换的基本性质 3.3 频率域采样 3.4 DFT的应用举例 3.1 离散傅里叶变换的定义 3.1.1 DFT的定义 设x(n)是一个长度为M的有限长序列, 则定义x(n)的N点离散傅里叶变换为 X(k)的离散傅里叶逆变换为 式中, ,N称为DFT变换区间长度,N≥M, 设变换区间N=8, 则 设变换区间N=16, 则 3.1.2 DFT和Z变换的关系 设序列x(n)的长度为N, 其Z变换和DFT分别为: 比较上面二式可得关系式 3.1.3 DFT的隐含周期性 前面定义的DFT变换对中, x(n)与X(k)均为有限长序列, 但由于 的周期性, 使(3.1.1)式和(3.1.2)式中的X(k)隐含周期性, 且周期均为N。 对任意整数m, 总有 同理可证明(3.1.2)式中 x(n+mN)=x(n) 实际上, 任何周期为N的周期序列 都可以看作长度为N的有限长序列x(n)的周期延拓序列, 而x(n)则是 的一个周期, 即 为了以后叙述方便, 将(3.1.5)式用如下形式表示: 式中x((n))N表示x(n)以N为周期的周期延拓序列, ((n))N表示n对N求余, 即如果 ?n=MN+n1, 0≤n1≤N-1,M为整数, 则((n))N=n1 例如, 则有 所得结果符合图3.1.2所示的周期延拓规律。 如果x(n)的长度为N,且 =x((n))N,则可写出 的离散傅里叶级数 3.2 离散傅里叶变换的基本性质 3.2.1 线性性质 如果x1(n)和x2(n)是两个有限长序列, 长度分别为N1和N2。 y(n)=ax1(n)+bx2(n)
FFT程序,输入是一组复数,输出也是一组复数,想问一下输入到底应该输入什么,输出的复数的含义是什么?给定一组序列的抽样值,如何用FFT确定它的频率? 首先,fft函数出来的应该是个复数,每一个点分实部虚部两部分。假设采用1024点fft,采样频
你对这个回答的评价是?
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。