如何找到信号的导数和二阶导数的平滑估计?

信息处理 过滤器 平滑
2022-01-05 12:35:13

我有一个采样的信号Δtfi(ti=iΔt)在哪里i=0,,n1. 我想找到信号的一阶和二阶导数:f(t)f(t).

我的第一个想法是通过中心差异来估计导数:

f(ti)=f(ti+1)f(ti1)2Δtf(ti)=f(ti+1)2f(ti)+f(ti1)(Δt)2

然而,信号可能有很多高频噪声,可能会导致快速波动ff.

找到“平滑”估计的最佳方法是什么ff?

2个回答

这可能更多地取决于您的数据。要知道,由于微分是线性运算,如果您选择任何线性滤波器来平滑 f' 和 f'',它相当于使用相同的滤波器平滑 f,然后取其导数。

您能否发布一些有关您想要区分的信号的图片或更多信息?可能您正在寻找的是某种低通滤波器来平滑信号。几个非常简单的选项包括一个单极递归滤波器,如y(n)=ax(n)+(1a)y(n1), 或 Hann 滤波器,它只是将信号与 Hann 窗口进行卷积。Hann 滤波器选项很好,因为它是线性相位的。如果您知道您关心的频率范围,您可以在频域中设计一个合适的低通滤波器。

Savitzky-Golay滤波器提供信号和前几个导数的平滑估计。

可以在此处找到 MATLAB 实现。