我计划在项目中以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网站的复制/粘贴。
答案 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)
所以你基本上错过了通话中的共振参数。