簡體   English   中英

對8位PCM信號進行FFT

[英]FFT on the 8 bit PCM signal

我在node-js中使用這種快速傅立葉變換實現: https : //www.npmjs.com/package/fft-js

我正在使用wav閱讀器,它讀取我的wav文件,該文件被編碼為8位PCM,並以8位無符號整數的數組形式輸出數據。

我看到fft-js期望信號值從-1到1,如本例用法所示:

var fft = require('fft-js').fft,
    signal = [1,0,1,0];

var phasors = fft(signal);

console.log(phasors);

我該怎么辦? 我應該將wav文件的8位pcm表示形式轉換為-1和1之間的值嗎?

根據Wikipedia上的這篇文章 ,您應該能夠獲取8位uint數據並將其映射到-1和1之間的數字,類似於以下內容:

let arrForFFT = uint8Array.map(num => (num - 128) / 128)

如果我的uint8Array看起來像這樣:

[ 256, 192, 128, 64, 0]

然后arrForFFT看起來像這樣:

[ 1, 0.5, 0, -0.5, -1]

編輯:如果您不使用ES2015,代碼將如下所示:

var arrForFFT = uint8Array.map(function(num) {
  return (num - 128) / 128
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM