通过使用较大步长的差=与矩形窗卷积来计算信号的平滑导数


9

我在采样的信号其中,i = 0到n-1。我想找到信号的一阶导数:f'(t)。Δt:fi(ti=iΔt)

我首先想到的是通过一个中心差异来估算:

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

但是,该信号可能会有很多高频噪声,可能会导致f'的快速波动。我猜正确的选择可能是通过与窗口函数(例如Hann)进行卷积来平滑信号,然后从差异中找到导数。

一位同事建议了一种更快的求导数平滑估计的方法:对2n个样本使用中心差,其中n >> 1:

f(ti)=f(ti+n)f(tin)2nΔt

当然,这将比首先使用窗口函数进行卷积运算具有更快的速度,但这是一个好的解决方案吗?

如果我们求和:

S=2Δt[f(tin+1)+f(tin+2)+..+f(ti+n1)]

并扩大通过与步骤中央差各衍生物Δt

S=f(tin+2)f(tin)+f(tin+3)f(tin+2)+..+f(ti+n)f(ti+n2)

除两个以外的所有条款都被取消:

S=f(ti+n)f(tin)=2nΔtf(ti)

因此:

f(ti)=1n[f(tin+1)+f(tin+2)+..+f(ti+n1)]

因此,取2n个样本的中心差等于先对大小为2n-2的矩形窗口进行卷积,然后取+/- 1个样本的中心差。

用矩形窗口平滑有多“不好”?

如果我们进行FFT,这将导致“振铃”,但是我们不需要进行FFT。

预先感谢您的任何回答!

Answers:


4

通常这是一个很难解决的问题。一直使用矩形窗口进行平滑(通常称为“移动平均值”),因此这不一定是问题。我不确定您指的是什么响声,也许是矩形窗口的频率响应的旁瓣。

差分本质上是高通操作;理想的连续时间微分器具有以下传递函数:

H(s)=s

因此其幅度响应为:

|H(jω)|=ω

因此,微分器的增益随频率单调增加。如果您的信号包含高频噪声,则可以通过应用微分器将其放大。为了解决这个问题,显然有两种方法:

  • 设计一个更复杂的微分滤波器,使其在覆盖感兴趣信号的频段部分具有所需的线性幅度响应,然后急剧衰减更高的频率。例如,您可以使用最小二乘法或频率采样方法设计此类滤波器。

  • 使用级联方法,首先要抑制所有可以使用低通滤波器的高频噪声,然后再使用微分器。微分器的频率覆盖范围不必太紧,因为低通滤波器将消除带外噪声。

如果您使用线性滤波器,则这些方法应该大致等效;您可能会想到第一个单滤波器方法只是微分器和低通滤波器的级联。如您所述,可以通过这种方式对中心差方法进行建模。没有您的应用程序知识,很难有人说这是“不好的”。我的主要思想是,如果平滑操作有形地衰减您感兴趣的信号,则这是“不好的”,这样导数估计将不再有用。但是,如果信号的参数使得您可以平滑噪声而又不会使信号明显失真(即,如果信号被充分地过采样),那么这将是一个胜利。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.