声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2634|回复: 13

[FFT] 怎样提高FFT的速度

[复制链接]
发表于 2010-8-16 15:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
现在对8192点进行8192*2点(就是在8912个点后再补8192个0)大概需要16ms的时间,但是时间还是长了
用的基二,请问各位大虾有什么方法可以让FFT速度更快?
回复
分享到:

使用道具 举报

发表于 2010-8-16 19:43 | 显示全部楼层

回复 楼主 wanghedong1226 的帖子

FFT的计算速度与编写的程序代码有关,与电脑速度有关,请问你用的什么程序代码,CPU速度是多少?
本人在单芯CPU速度3G电脑上运行16384点实数FFT速度小于4ms。
将FFT_Test.dat改名为FFT_Test.exe在你的电脑上运行,看看(16384点)FFT需要多少时间?

[ 本帖最后由 hcharlie 于 2010-8-17 06:55 编辑 ]

FFT_Test.dat

40 KB, 下载次数: 9

评分

1

查看全部评分

 楼主| 发表于 2010-8-18 15:00 | 显示全部楼层
用你给的测试文件测也是小于4ms
本人是双核CPU 2G HZ
我执行16ms是在VC下面,我想的是能不能改算法来提高速度。
我用的是基二,输入的是实序列,但我还是当复序列进行处理的。如果是实序列,可不可以就是只处理一半来提高速度,因为是对称的。或者说16384点我分成8段处理,每次处理2048,最后叠加,但是好像这样频率分辨率要降低
发表于 2010-8-18 15:43 | 显示全部楼层
本帖最后由 hcharlie 于 2010-8-18 15:47 编辑

复FFT(虚部加16384个0)大概 8 ms,我也是VC++编程,双精度浮点。
实数FFT 4 ms。(有极小的相位误差)
 楼主| 发表于 2010-8-18 15:54 | 显示全部楼层
回复 hcharlie 的帖子

现在我打算进行分段处理,就是16384分8段,依次进行FFT,最后叠加,不知道这样行么?
   
发表于 2010-8-18 16:13 | 显示全部楼层
本帖最后由 hcharlie 于 2010-8-18 16:17 编辑

当然可以,频率分辨率增加8倍。其实对于随机信号通常应该取多帧平均可以增加精度。参见(6楼):
http://forum.vibunion.com/thread-92098-1-1.html
通常还要加(如hanning)窗。
发表于 2010-8-18 17:51 | 显示全部楼层
无须补零,应插值

评分

1

查看全部评分

发表于 2010-8-18 19:35 | 显示全部楼层
为什么要补8192个0 ???
 楼主| 发表于 2010-8-18 20:21 | 显示全部楼层
本帖最后由 wanghedong1226 于 2010-8-18 20:41 编辑

回复 hcharlie 的帖子
我理论掌握得不是很好,个人认为补零就是为了提高频域的采样率,在频域上看到更多的谱线,减小栅栏效应我不知道我这样做对不对?
   
 楼主| 发表于 2010-8-18 20:23 | 显示全部楼层
回复 VibrationMaster 的帖子
可以讲得更详细些么,我以前完全不懂FFT,看了一个月的书,勉强了解了一点,哎

   
发表于 2010-8-19 08:17 | 显示全部楼层
本帖最后由 hcharlie 于 2010-8-19 08:24 编辑

你的想法是错的,后面加多少0也不能达到减小栅栏效应。记住不要轻易去加0。
抄一段网上的论述如下:

补零对频谱的影响:
进行zero padding只是增加了数据的长度,而不是原信号的长度。就好比本来信号是一个周期的余弦信号,如果又给它补了9个周期长度的0,那么信号并不是10个周期的余弦信号,而是一个周期的余弦加一串0,补的0并没有带来新的信息。..........所以,如果待分析的两个信号频率接近,而时域长度又较短,那么在频域上它们就落在一个sinc主瓣内了,补再多的0也是无济于事的。



评分

1

查看全部评分

发表于 2010-8-19 09:24 | 显示全部楼层
本帖最后由 hcharlie 于 2010-8-19 11:46 编辑

回复 wanghedong1226 的帖子
栅栏效应对于FFT来说,问题是始终存在的。比如频率分辨率10Hz,一帧数据中100Hz为10个整数周期,110Hz为11个整数周期,在100~110之间的频率就不可能是整数周期,比如105Hz就是10.5个周期,在一帧数据中它的波形不能首尾相接,这样一来就显示出加窗的效果。不加窗就是加矩形窗,这时候105Hz的能量除了反映在第10和11谱线上,更泄漏到更远的临近很多谱线中。加hanning窗则不会泄漏得更远。
参见:http://forum.vibunion.com/thread-94575-1-1.html
什么时候需要考虑栅栏效应?比如对某个特定频率(例如50Hz及其倍频)特别感兴趣,则要选择合适的采样频率,使50Hz为频率分辨率的整数倍,比如原定采样频率1000Hz应改为1024或2048Hz。(原因请自己想)


   

评分

1

查看全部评分

发表于 2010-8-19 09:33 | 显示全部楼层
1. 栅栏效应是指分析周期或谐波信号
2。对随机信号,栅栏效应的概念不存在
3。对情形1可采用插值的方式完全消除栅栏效应,
参考下面的连接
http://forum.vibunion.com/forum- ... 5167-from-home.html

评分

1

查看全部评分

头像被屏蔽
发表于 2014-7-28 17:43 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-17 15:36 , Processed in 0.070992 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表