声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1951|回复: 6

[FFT] 非完整周期采样

[复制链接]
发表于 2008-7-31 10:42 | 显示全部楼层 |阅读模式

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

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

x
我在网路上找了几个计算fft的源码,
但只能计算2的次方,
但如果我要整个周期的采样的话,
我很难让它的资料刚好是2的n次方,
我该如何解决这样的情况?
谢谢

[ 本帖最后由 TJ球 于 2008-7-31 11:15 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-7-31 15:13 | 显示全部楼层
对数据加窗后再补0值,使数据长度为2的n次方。
补充:
如果想在谱分析中能利用整周期采样的特点,以上的方法就不是太好;若要能利用上整周期采样的特点,只能在整周期采样后,把数据进行调整采样频率(例如利用MATLAB中的resample函数),使采样点数正好为2的n次方。

[ 本帖最后由 songzy41 于 2008-7-31 15:32 编辑 ]
 楼主| 发表于 2008-7-31 16:54 | 显示全部楼层
补0方法我试过,
但跑出的频谱感觉不太对劲,
觉得可能会导致计算SNDR及THD造成错误,
完整周期.jpg
補0.jpg
 楼主| 发表于 2008-7-31 17:30 | 显示全部楼层

回复 2楼 的帖子

您说的resample函?我会研究看看。
但若我不用更改采样频率的方式,
我是否能够以修改计算FFT源码的方式让程式可以计算非2的N次方资料呢?
因为我知道理论上FFT只能算2的N次方,但是否能够改呢?
发表于 2008-7-31 18:25 | 显示全部楼层
本帖最后由 wdhd 于 2016-9-12 14:02 编辑
原帖由 TJ球 于 2008-7-31 17:30 发表
您说的resample函?我会研究看看。
但若我不用更改采样频率的方式,
我是否能够以修改计算FFT源码的方式让程式可以计算非2的N次方资料呢?
因为我知道理论上FFT只能算2的N次方,但是否能够改呢?

现在理论上对FFT已不限于2的N次方,已有许多质数分解的方法来完成FFT的运算。在MATLAB中FFT函数实际上是完全不受2的N次方的限制。如果不是MATLAB语言,而是其它的语言,要编制这种质数分解的FFT程序,工作量可能较大。相关的资料已记不清楚了,好象在IEEE ASSP或SP中有(时间都较早)。
发表于 2008-7-31 20:10 | 显示全部楼层
我找到一篇文章:
Extension of a radix-2 fast Fourier transform (FFT) program to include a prime factor
IEEE ASSP 1975 22(5) page 388
其中有FORTRAN序。
 楼主| 发表于 2008-8-1 15:44 | 显示全部楼层

回复 6楼 的帖子

您提的资料我找到了,
不过都是原文我需要花点时间好好研读一番,非常感谢!!
另外我也上网找了一些资料,
如同songzy41所说的fft运算并没有局限2的羃次方,
是我搞错了,
资料其中提到MATLAB的FFT执行:
1.对任意的2的幂数的n,FFT使用高速radix-2算法.执行时间最快.
2.对任意非的2的幂数的n,FFT使用主因子算法.
3.对任意的质数的n,FFT不使用FFT算法,而直接执行DFT算法.

也找到了一个网站,其中一个叫”青杉”的网友,介绍了傅立叶转换观念及写了许多vc++的源码,相当不错,其中也找到了我要的程式,也分享给各位。
http://www.programmer-club.com/p ... general&id=3041
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-22 12:38 , Processed in 0.070083 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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