基2FFT算法matlab程序编写,基2时抽8点FFT的matlab实现流程及FFT的内部机理

前言

本来想用verilog描述FFT算法,虽然是8点的FFT算法,但写出来的资源用量及时延也不比调用FFT IP的好,

还是老实调IP吧,了解内部机理即可,无需重复发明轮子。

参考

流程

FFT能做什么在此就不赘述了,只了解数据的运算流程。

1.FFT的基本公式:

88a25e65994db8ce1f1f1eef9ceea7dc.png

第一眼看这个公式,肯定是脑袋瞬间宕机。

2.旋转因子:记住旋转因子具有可约性,对称性,周期性。

表示方法有两种,通过欧拉公式转换,本质上是一致的。

Wn=exp(-j*2*k*pi/N) ,N表示FFT点数,k表示第几个旋转因子。

Wn = cos(2*pi*k/N) - i*sin(2*pi*k/N)

第二次脑袋瞬间宕机。

3.蝶形图:

好在数学家为了普通人类能理解公式,绘制了帅气的蝴蝶漫画图,8点FFT的如下:

62ac4b0870fcd70c51269d341261f4b1.png

不直观,添加几条辅助线再看:可以看到分为三级蝶形运算。

比如第一级的蝶形运算结果:x0’=x[0]+x[4]*w0,x1’=x[0]-x[4]*w0。其他节点以此类推。

注意-1的位置和旋转因子的位置。注意数据和旋转因子都是复数,这就是说蝶形图中的乘法和加减都是复数运算。

而所谓代码实现,不管什么代码,本质上就是对各级的公式进行实现,从而得到结果。

6d2c421bef426fe73fa9cee48716ef9f.png

觉得讲得不清楚,那么看下图更直观:当然图中少标识了-1。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值