簡體   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