我想使用Excel中的(2007)內置的FFT功能,但是,它要求我有2^n個數據點 - 我沒有。EXCEL快速傅里葉變換幫助
我試圖兩兩件事,都給出不同的結果:由零
- 墊的數據值以使得N(數據點的數目)達到2
- 使用一個分頻的最接近功率(112 = 64 + 32 + 16)
哪一種更好的方法?如果我有112個數據點,然後我做一個64點,然後32,然後16我很喜歡編寫VBA宏,但我正在尋找一種不需要N爲2的冪約束的算法。任何人都可以提供幫助嗎?
我想使用Excel中的(2007)內置的FFT功能,但是,它要求我有2^n個數據點 - 我沒有。EXCEL快速傅里葉變換幫助
我試圖兩兩件事,都給出不同的結果:由零
哪一種更好的方法?如果我有112個數據點,然後我做一個64點,然後32,然後16我很喜歡編寫VBA宏,但我正在尋找一種不需要N爲2的冪約束的算法。任何人都可以提供幫助嗎?
填充用零方向是正確的,但要記住,如果你正在做的,爲了估計頻率內容的變換,你需要一個window function,而應適用於短塊(即,如果你有2000點,運用一個2000點的Hann窗口,然後填充到2048並計算變換)。
如果你正在開發一個加載項,你可能會考慮使用其中的一個FFT庫。我是Marc Borgerding的粉絲KISS FFT。它爲許多塊塊提供了快速轉換,基本上可以將其分解爲數字2,3,4和/或5.但它不處理素數大小的塊。它用非常簡單的C語言編寫,所以應該很容易移植到C#。或者,this SO question建議可以在.NET中使用的一些庫。
將您的數據分割成較小的位將導致錯誤的輸出,特別是對於較小數量的數據點。
用零填充是一個好得多的想法,也是FFT的一般方法。如果您對FFT的另一種方法感興趣,倍頻程會爲您提供幫助,並且大多數Matlab文檔都適用,因此您應該不會遇到任何問題。
請記住,您始終可以計算離散傅立葉變換,即O(n^2) – 2010-12-21 19:31:03