噪声输入信号

时间:2016-03-08 07:42:34

标签: c++ filtering smoothing

我附加了输入信号的图像(以蓝色显示),这实际上是一个连续输入流,其趋势我不知道,并且使用跨度为5的移动平均滤波器(以红色显示)平滑信号。

原始输入和平滑输入信号

enter image description here

原始输入和平滑输入信号的一阶导数

enter image description here

我的目标是计算此信号与其一阶导数的比率。然而,显然一阶导数是嘈杂的,并没有给出好的结果。我意识到我必须将滤波器从移动平均值更改为更强大的滤波器。我查了一下Savitzky-Golay滤波器,但我在另一个网站上看到,保留信号形状比降低噪声更有效。 http://terpconnect.umd.edu/~toh/spectrum/Smoothing.html

卡尔曼滤波器将是我的下一个猜测,但它需要一个初始状态估计,我不知道这种类型的信号。

关于如何平滑噪声输入的一阶导数的任何其他建议?

1 个答案:

答案 0 :(得分:3)

首先,不要指望任何这些过滤器有任何奇迹。噪声数据的数值微分通常是关键的,因为差分运算本身就像一个高通滤波器,从而放大了噪声。

是的,移动平均线,Savitzky-Golay和卡尔曼之间存在差异,但这些是微妙的。 Savitzky-Golay的主要优点是使用自适应窗口大小。

查看您的数据,您似乎应该使用更大的窗口大小,从而降低截止频率。但是,我不知道你的数据集是否总是这样。

另一个暗示:只要您的滤镜是有效线性的,如果您首先应用滤镜然后计算导数,或者如果您从原始信号计算导数然后应用滤波,则无关紧要。

相关问题