我想在Python中实现指数平滑过滤器。目前,我计算:
y[n] = alpha * x[n] + (1 - alpha) * y[n-1],
其中x[n]
是“当前样本”,y[n]
是新样本,y[n-1]
是先前的输出样本,而alpha是过滤器参数。
正如您可能想像的那样,我使用普通的Python迭代进行计算,它非常缓慢(例如,已经很难获得10000个数据点)。
可以使用numpy
和矢量运算对这种演算进行编码吗?
我不确定我是否对scipy.signal
感兴趣。我的主要目的是研究输入向量长度和系数alpha分辨率对输出精度的影响。
编辑: 看来我没有正确地提出问题-我对这种特定的解决方案不感兴趣,但是对“这种问题”不感兴趣。我使用此方程式作为基础,但是我对其进行了其他处理,特别是将整数分辨率的舍入和限制为alpha(编码为二进制补码)和y [n](修剪为特定位宽),因此它给出了结果与参数的分辨率一样好(基本上是模拟硬件行为)。因此,来自scipy的lfilter不是我可以使用的。另一方面,提议的Numba似乎正是我想要的。