首页 > 解决方案 > 是否可以使用 numpy 计算递归数据

问题描述

我想在 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 似乎是我正在寻找的。

标签: pythonnumpyscipy

解决方案


推荐阅读