關於wav檔案fft處理後x,y軸座標資料的問題,wavfft

來源:互聯網
上載者:User

關於wav檔案fft處理後x,y軸座標資料的問題,wavfft

1.關於橫座標的頻率的最大值是採樣頻率,那麼每個點對應的頻率值就很好算了:f(n) = [Fs/(N/2)]*n  (Fs是採樣頻率,常見的是44.1KHz(44100),N是採樣點數,k表是第k個點)。我之前也參考了別人的寫法,地址 ,有一段內容是這樣描述的:

時域PCM資料是16位的short類型,取值範圍是-32768..32767。對於頻譜顯示用512點FFT就足夠了,我們知道音頻資料的截止頻率是由其採樣率決定的,如果採樣率為32kHz,截止頻率為16kHz。可以計算出FFT後頻率間隔為16*1024/(512/2)=64Hz”一開始一直糾結看不懂,不過後來自己仔細想想原來是單位的問題,當然原作者對換算可能也出現問題1024應該是1000吧(kHz和Hz之間的換算是1000);

2.縱座標就是處理後的資料,我要做的是頻域圖,一般的步驟就是讀取相應的檔案,java中資料的轉換確實是個老大難的問題,開始讀的時候用的是byte[]數組,而PCM資料對應的是float類型的,而我封裝的畫圖的是double[]數組,所以轉啊轉,還要確保精確度的問題:

byte[]轉float[]:的寫法參考的是上面的連結地址

floa[]轉double[]相對較簡單,注意要保證精確度:

1 //buf位元組數組2 for (int i = 0; i < buf.length; i++) {3             yData[i] = Double.parseDouble(String.valueOf(buf[i]));4 }

對應是FFT演算法,網上有很多的分裝的類,自己可以自行搜尋下載。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.