信号的实时数值微分

信息处理 即时的 PID
2022-02-06 19:00:49

我正在尝试在 Python 中实现一个 PID 控制器,但我的离散信号的实时数值微分存在一些问题。

我正在使用以下方法:

dxnt=xn1xndt

在哪里dt是测量时间的时间差xnxn1.

微分在某种程度上是准确的,但实时系统上的结果并不像我希望的那样准确。在大多数情况下,微分控制器并不能真正提高系统的稳定性。在高增益时,它开始将噪声引入系统。

大多数数值微分方法建议进入未来(xn+1) 可悲的是,对于我的系统来说这是不可能的。如:

xn+1xn12×dt

是否有任何方法可以更准确地计算实时微分?

2个回答

您的原始差异化因素,应该是x(n)x(n1),称为“一阶差分”微分器。该微分器放大了高频噪声。作为下一步,我建议您尝试通过以下方式定义的所谓“中心差异”微分器:

Diff=x(n)x(n2)2

它不会放大高频噪声。

在 2003 年的法语论文中,“ Estimation par maximum de vraisemblance de la dérivée d'un signal bruité。Application à la caractérisation de vérins pneumatiques ”(噪声信号导数的最大似然估计。应用于气缸表征) [来自早期的GRETSI法语信号和图像处理会议],有更高滞后的公式,允许基于最大似然的递归估计器,并假设信号行为:恒定速度、恒定加速度、恒定加加速度。您可以找到更高滞后的导数(在噪声处理方面可能更好),例如:

12(3x[k]4x[k1]+x[k2])
或者
130(10x[k]x[k1]2x[k2]3x[k3]4x[k4])

我希望他们能满足一些需求。法语可能是一个问题,但公式是自包含的。