2016-03-12 41 views
0

我在node-js中使用了这种快速傅里叶变换实现:https://www.npmjs.com/package/fft-js8位PCM信号上的FFT

我使用的是wav reader,它读取我的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之间的值,如果是这样的话?

回答

2

根据这一article维基百科上,你应该能够采取8位UINT数据,并将其与一些类似的映射到-1和1之间的数字:如果我的uint8Array看起来像

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

这样的:

[ 256, 192, 128, 64, 0] 

然后arrForFFT应该是这样的:

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

编辑:如果你不使用ES2015,代码应该是这样的:

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