繁体   English   中英

IFFT比FFT高出几个数量级

[英]IFFT taking orders of magnitude more than FFT

我正在尝试使用FFT方法(基本上是scipy.signal的方法)对一维信号进行重采样。 但是,即使我的输入信号的长度为2的幂,该代码也将永远运行。 在查看分析后,我发现了问题的根源。

基本上,此方法采用FFT,然后去除傅立叶频谱的一部分,然后采用IFFT以较低的采样率将其带回时域。

问题是,该IFFT正在长得比FFT运行:

ncalls tottime percall cumtime percall filename:lineno(function) 1 6263.996 6263.996 6263.996 6263.996 basic.py:272(ifft) 1 1.076 1.076 1.076 1.076 basic.py:169(fft)

我认为这与截止后剩余的傅立叶点数有关。 就是说,这是一个令人难以置信的速度下降,所以我要确保:

答:这种行为是半合理的,并且绝对不是错误。 B.我该怎么做才能避免此问题并仍然有效地降低采样率。

现在,我可以将输入信号填充为2的幂,以使FFT真正快速地运行,但不确定如何对反向操作执行相同的操作。 我什至没有意识到这对于IFFT是一个问题:P

如果您的IFFT的长度与FFT的长度不同,并且IFFT的长度不仅仅由很小的质数(2、3等)组成,那么效率可能会大大下降。

因此,仅当两个采样率之间的比率具有较小的主要因子(例如2、3和7)时,这种重采样方法才有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM