节点 Digitalsignals IIRFilter 仅创建 NaN 值

Node Digitalsignals IIRFilter creates only NaN Values

我打算在项目中使用 DSP.js in the form of node.js digitalsignals npm 模块来处理信号数据。目前我正在尝试对我的信号执行低通滤波。由于我的信号的已处理数组数据在应用滤波器后仅包含 '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

代码基本上是 copy/paste corban brook 的 github 站点。

可以测试此代码,例如这里: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) 

所以你基本上在你的调用中缺少共振参数。