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