我正在使用socket.io从node.js服务器传输数据。数据每33毫秒进入一个数据包。我正在将数据实时放入图表中,我想在其上应用数字高通滤波器。
我正在试图弄清楚如何使用DSP.js对数据应用无限脉冲响应算法 - 1hz的高通 - 但我不确定如何解决这个问题。
我知道我会使用此库(var filter = IIRFilter(HIGHPASS, 1, 30)
)创建过滤器对象,但至于应用过滤器(filter.process(signal)
),我不确定signal
是什么将会。当每个数据包进入时,我将其添加到名为data
的数组中。它会在这个阵列上吗?或者我必须为每个数据包执行此操作吗?
答案 0 :(得分:1)
在IIR滤波器中,所有过去的样本计算当前样本的结果。这就是为什么它被称为无限脉冲响应。
我可以看到2个处理选项。
等待,收集所有样本,最后在显示数组之前进行处理data
实时!请记住,过滤后的数据不得与原始数据混合使用。否则过滤将失真。创建一个新数组filtered_data
。每次数据包进入时,将其复制到data
数组中,然后复制data
中的filtered_data
数组并调用filter.process(filtered_data)
。最后显示filtered_data
。