[問題] FFT補零的方法

看板comm_and_RF作者 (Tidus)時間7年前 (2019/01/11 08:42), 編輯推噓8(8031)
留言39則, 4人參與, 6年前最新討論串1/1
快速傅立葉只能用於2^N個資料點數,N為自然數, 有查到通常是會用補零的方式把資料點數補滿到2^N。 因為套裝軟體沒辦法符合我的需求, 所以使用numerical recipe中FFT 的code, 我給訊號源sin(2*pi)+sin(30*pi)+sin(100*pi),在[0,2pi)內等分1000點, http://i.imgur.com/hXDLxgj.jpg
我把訊號轉成頻譜強度, 橘色是FFT補到2048,藍色是直接DFT,都還沒除1000。 昨天問人說FFT轉出來不正確,我想可能是因為補零造成內插, 這樣FFT要如何使用於任意數的資料點數? ----- Sent from JPTT on my LGE LG-H860. -- !!!!!!!!!!!!!簽名檔破750000點擊率啦!!!!!!!!!!!!!!! Fw: [問卦] 電影:決勝21點的機率問題 https://goo.gl/2BpbB7 #1MfN3FgZ (joke)

07/22 16:41,
chx64的1/2悖論真的很經典呢
07/22 16:41
!!!!!!!!!!!!!!簽名檔破750000點擊率啦!!!!!!!!!!!!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.26.230.28 ※ 文章網址: https://www.ptt.cc/bbs/comm_and_RF/M.1547167375.A.6D0.html

01/12 12:23, 7年前 , 1F
Matlab的fft,不補到2的次方也可以算 你
01/12 12:23, 1F

01/12 18:11, 7年前 , 2F
公司沒有matlab,且包成dll用C較方便
01/12 18:11, 2F

01/13 19:31, 7年前 , 3F
應該沒錯, 本來就是長這樣. 不同點數的DFT
01/13 19:31, 3F

01/13 19:31, 7年前 , 4F
算出來的結果本來就不會一樣啊.
01/13 19:31, 4F

01/13 19:33, 7年前 , 5F
你要先懂N點DFT結果的物理意義.
01/13 19:33, 5F

01/13 19:35, 7年前 , 6F
N不同,你對應頻率上的格子點就偏移了
01/13 19:35, 6F

01/13 19:42, 7年前 , 7F
但偏移不代表不對,只是你要正確的解讀它
01/13 19:42, 7F

01/13 19:47, 7年前 , 8F
另外回到原題,最簡單的做法就是直接餵它1024
01/13 19:47, 8F

01/13 19:48, 7年前 , 9F
有限制說你不能一次取1024點資料嗎?
01/13 19:48, 9F

01/13 19:49, 7年前 , 10F
常見的應用中,取樣訊號是一直進來的
01/13 19:49, 10F

01/13 19:49, 7年前 , 11F
要取1000點或1024點是看你方便, 那當然選
01/13 19:49, 11F

01/13 19:49, 7年前 , 12F
計算快速的1024點啊
01/13 19:49, 12F

01/13 21:11, 7年前 , 13F
點數我不能保證,因為是寫給客戶的
01/13 21:11, 13F

01/13 21:12, 7年前 , 14F
我們只能建議他量測2^N點數
01/13 21:12, 14F

01/13 21:14, 7年前 , 15F
這樣看起來就只能混用Radix去做了
01/13 21:14, 15F

01/13 23:42, 7年前 , 16F
matlab是call FFTW library
01/13 23:42, 16F

01/13 23:42, 7年前 , 17F
基本上也是不同點數的算法不一樣
01/13 23:42, 17F

01/13 23:43, 7年前 , 18F
N能因數分解為小質數時最快
01/13 23:43, 18F

01/14 00:27, 7年前 , 19F
原來matlab也是call FFTW的喔@@
01/14 00:27, 19F

11/05 23:21, 6年前 , 20F
不用再受限2^n了吧,我之前都直接叫fftw
11/05 23:21, 20F

11/05 23:23, 6年前 , 21F
如果你剛好用Linux, $ apt-cache search
11/05 23:23, 21F

11/05 23:23, 6年前 , 22F
fftw
11/05 23:23, 22F

11/05 23:26, 6年前 , 23F
fftw 很強的, NR 並非ㄧ定可靠喔~
11/05 23:26, 23F

11/05 23:29, 6年前 , 24F
有些問題用掉過我了我不少時間精力....
11/05 23:29, 24F

11/05 23:30, 6年前 , 25F
得到的教訓:數值問題交給數值專家...
11/05 23:30, 25F

11/05 23:33, 6年前 , 26F
我根本就不該花時間去改碼到算對為止...
11/05 23:33, 26F

11/05 23:35, 6年前 , 27F
(NB: 但我說的並不是它的 dft routines
11/05 23:35, 27F

11/05 23:35, 6年前 , 28F
11/05 23:35, 28F

11/05 23:40, 6年前 , 29F
"算對"?是,會有算對算錯的問題!
11/05 23:40, 29F

11/05 23:41, 6年前 , 30F
隨時要有其它軟體可以對答案,我常用 ma
11/05 23:41, 30F

11/05 23:41, 6年前 , 31F
tlab
11/05 23:41, 31F

11/05 23:44, 6年前 , 32F
所以,必須自己寫時,建議用可靠的程式庫
11/05 23:44, 32F

11/16 18:20, 6年前 , 33F
是這樣沒錯,FFTW沒開放源碼,僅DLL
11/16 18:20, 33F

11/16 18:20, 6年前 , 34F
我個人是習慣把源碼擷取出來包進程式
11/16 18:20, 34F

11/16 23:26, 6年前 , 35F
我自己的確也有這種頃向,ㄧ直都是
11/16 23:26, 35F

11/16 23:30, 6年前 , 36F
後來也找到了原始碼對付任何尺寸,不必方
11/16 23:30, 36F

11/16 23:30, 6年前 , 37F
11/16 23:30, 37F

11/16 23:33, 6年前 , 38F
現在想起來程式裡 fftw ㄧ直都非預設,是
11/16 23:33, 38F

11/16 23:33, 6年前 , 39F
選項 :)
11/16 23:33, 39F
文章代碼(AID): #1SD-QFRG (comm_and_RF)