查看完整版本: 對資料做FFT後,畫出頻譜的頻率軸間格怎麼獲得?
頁: [1]

bed321654987 發表於 2018-3-29 12:46 AM

對資料做FFT後,畫出頻譜的頻率軸間格怎麼獲得?

我這裡有一筆實驗資料想做頻譜分析
我知道使用fft函數可以很輕鬆的對資料做傅立葉轉換(我是用python寫的)
但問題是我要畫出頻譜卻不知道頻率軸的頻率間格該怎麼算
我的資料取樣頻率fs是10kHz,資料點數共312457點。取樣時間是31秒左右
請問這樣我頻譜的頻率軸該怎麼取?
是把0~10k直接切成312457等分就好了嗎?
因為FFT之後獲得的點數也是312457個點,雖然有一半是對稱的

<div></div>

love88131496 發表於 2018-7-13 10:14 PM

本帖最後由 love88131496 於 2018-7-13 10:20 PM 編輯

我不熟python, 所以不知道有沒有繪圖API

如果硬是用程式邏輯,我的算法會是這樣:
妳算出來的FFT結果是原始資料,要把這個頻譜圖畫到一個Width x Height的矩形圖表上
所以假設妳的圖,顯示在螢幕上,寬度要 1000px

那等於妳要把312457筆資料畫到1000個x值上
簡單說,就是每312筆資料取樣一次就好= =

至於0~10k, 那個不重要。重要的都是妳要"畫出來",所以關鍵是畫出來要的寬度
當然如果妳要像示波器一樣還可以動態跑,還可以跟據實際的31秒跑完(當然這沒那意義),或者跟據其他條件畫,
那妳的重點就是在

(最高的取樣頻率樣本値-最低的顯示頻率樣本値)/顯示的實際螢幕像素寬=取樣間隔。

例如,妳原本每隔312筆資料取樣,把0~10k的頻譜畫在1000px寬的螢幕上(很明顯,應該會失真)
而妳打算當使用者點其中一筆資料,妳放大顯示前後0.5k的頻譜,那只要找出前後0.5k的頻率樣本在第幾筆資料
例如在156500~158500, 那取樣就是從156200開始,每隔 (158500-156500) / 1000筆取樣畫出來就好
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
頁: [1]