我在Matlab中使用中值滤波来减少阵列中的噪声 . 我正在计算物体的速度和加速度 . 速度部分运行良好,我得到的结果正是我的预期 .
我偶然发现了加速问题 . 我注意到加速度表现不佳;我注意到矩形形状而不是预期的光滑形状 .
加速度曲线应该是发动机中凸轮和从动件的正弦波,但问题是波的边缘不是平滑的而是直线的形式 .
对于我使用的速度 vavg=medfilt2(v, [1 5])
对于accel我使用 aavg=medfilt2(a, [1 5 ])
我应该使用其他过滤器来获得准确的边缘吗?
是否有其他过滤功能可能有用?
1 回答
利用某种东西的衍生物可以放大噪音,因此当你观察信号的加速时,你遇到问题就不足为奇了 . 您可以使用抗噪方法来获取衍生物 . 有关详情,请参阅此页面:
http://www.holoborodko.com/pavel/numerical-methods/numerical-derivative/smooth-low-noise-differentiators/
听起来人们经常使用Savitz-Golay过滤器 - 尝试Matlab中的
sgolay
和sgolayfilt
函数 .但是,一般而言,您应该考虑信号的特征和噪音 . 如果你知道信号会非常平滑,那么为什么不首先强调它的顺序呢?似乎样条曲线可能适合您(在matlab中为
spline
) .