(转)Bluecore-DSP中FFT的用法

FFT 的原理并不难,首先是复变函数+三角函数=复立叶级数,离散化后便是离散复立叶变换DFT,它的快速实现算法便是FFT,DFT到FFT在原理上没有什么 突破,主要还是利用了三角函数的优异的计算特性,实践性的快速算法。CSR的Kalimba DSP实现FFT是有一个算子的,看下它的源码就知道无非是三级循环运算,跟网上满天飞的C语言实现其实是一样的,对做算法的人而言,FFT算法就是基本 功,不过基本功满天飞也实在折射了国人做算法之现状,什么时候当稍显优秀和复杂的算法可以在网上飞时,咱们的算法设计能力就说明得到真提高了。打住,偶不 是做算法的。给大家介绍下CSR的DSP中FFT的用法。

对于任何函数一定要搞清其入口和出口,即输入输出是什么类型,长度和大小的取值区间是什么,FFT算子也不例外。信 号处理用的FFT是对时域信号求其频率成分大小的运算,而且它是复数运算,需要把信号做实部,而虚部全为零,运算结果实部虚部取模便为其频率成分的大小。 而且要注意它是占位运算,即运算结果的输出占用的是输入数据的地址空间,输入顺序,输出逆序,输入逆序时输出顺序,这个逆序是位逆序,比如0000001 的逆序是1000000,显然这个逆序还取决于FFT运算的点数,根据复立叶变换原理,频率分辨率取决于运算点数和ADC的采样速率,计算公式如下:
Δf=fs/N

同时,由于是占位运算,所以在做多次运算时,一定要在运算前将实部虚部都清零,然后再对实部进行赋值。对于实部,如果数据小于运算点数,可以将剩余未赋值数据填零,这样也不会影响运算结果。


本文引用通告地址:

http://majianhui.spaces.eaw.com.cn/articles/trackback/item/3253
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值