-5

我在 Matlab 中使用中值滤波来减少数组中的噪声。我正在计算一个物体的速度和加速度。速度部分工作得很好,我得到的结果正是我所期望的。

我偶然发现了有关加速的问题。我注意到加速表现不佳;我注意到矩形形状而不是预期的平滑形状。

加速度图应该是发动机中凸轮和从动件的正弦波,但问题是波的边缘不平滑,而是直线形式。

对于我使用的速度vavg=medfilt2(v, [1 5])

对于我使用的加速aavg=medfilt2(a, [1 5 ])

我应该使用其他过滤器来获得准确的边缘吗?

还有其他有用的过滤功能吗?

4

1 回答 1

1

取某物的导数会放大噪声,因此当您查看信号的加速度时遇到问题也就不足为奇了。您可以使用抗噪声方法来获取导数。有关详细信息,请参阅此页面:

http://www.holoborodko.com/pavel/numerical-methods/numerical-derivative/smooth-low-noise-differentiators/

听起来人们经常为此使用 Savitz-Golay 过滤器 - 试试 Matlab 中的sgolayandsgolayfilt函数。

不过,总的来说,您应该考虑信号和噪声的特征。如果您知道信号将变得非常平滑,那么为什么不首先逼近它以增强其平滑度呢?看起来样条曲线可能适合您(spline在 matlab 中)。

于 2011-12-07T20:35:26.613 回答