这个做移动平均线的代码是否正确?

信息处理 matlab 移动平均线 八度
2022-02-10 21:04:00

这个做移动平均线的代码是否正确?

y=conv(x, ones(1,100)/100);

我想用代码中的移动平均滤波器过滤我的语音信号。我认为我可以为此使用卷积。

2个回答

是的,此代码对于实现移动平均滤波器是正确的。

尽管如此,我还是建议在 MATLAB 中使用内置的平滑函数。

y = smooth(x, 100, 'moving')

假设您使用的是 Matlab 或 GNU Octave,那么是的,应该没问题。 与本教程比较使用卷积进行移动平均。

您已经在内核上完成了除法,但是无论您在此处还是在卷积之后执行它都没有数学上的区别。实际上,如果您按照自己的方式进行操作(扩展内核),将花费更少的时间。

您可能会发现移动平均线不足以进行音频处理。然后,您将需要考虑在 Matlab 中使用适当的方法创建过滤器。一些与Matlab一起搜索的关键字:filter、butter。


@jojek 的好建议。平滑通过卷积进行移动平均,但也有其他选项。如果您有大量数据需要过滤,它还可以利用 GPU 来加快处理速度。