Node Digitalsignals IIRFilter仅创建NaN值

时间:2015-12-10 14:47:43

标签: node.js signal-processing

我计划在项目中以node.js DSP.js npm模块的形式使用digitalsignals来处理信号数据。目前我正在尝试对我的信号执行低通滤波。由于我的信号的处理后的阵列数据仅在应用滤波器后包含“NaN”值,因此我尝试将滤波器应用于使用DSP.js振荡器功能(实际上是简单的正弦信号)创建的信号。

我检查了正弦振荡器是否按预期产生正弦信号,方法是将它写在console.log()上。

但是,在应用IIRFilter后,处理后的正弦信号也会产生NaN值。

我的测试代码如下:

var dsp = require('digitalsignals');
var buffer = [];

var osc = new dsp.Oscillator(dsp.SINEWAVE, 440, 1, 2048, 22050);
osc.generate();
buffer = osc.signal;
console.log(buffer); // shows correct sine signal array

var filter = new dsp.IIRFilter(dsp.LOWPASS, 200, 44100);
filter.process(buffer);
console.log(buffer); // shows only NaN

代码基本上是corban brook的github网站的复制/粘贴。

1 个答案:

答案 0 :(得分:1)

可以测试此代码,例如在这里:https://tonicdev.com/npm/digitalsignals,您只需剪切和粘贴,无需帐户。

他们实际上发布了他们的示例错误,您需要调用过滤器,例如像这样:

var filter = new dsp.IIRFilter(dsp.LOWPASS, 200,1,44100);

如果你查看dsp.js https://github.com/zewemli/dsp.js/blob/master/dsp.js,你会发现这样的定义:

var IIRFilter = DSP.IIRFilter = function(type, cutoff, resonance, sampleRate) 

所以你基本上错过了通话中的共振参数。