环境数据序列的小波去噪程序

信息处理 matlab 小波 去噪
2022-01-26 15:02:49

我有一个时间序列的水温,例如

y = 1+(30-10).*rand(1,365);

我以前使用matlab的小波工具箱中的小波去噪例程来去除信号中不需要的噪声,例如

[s_denoised, ~, ~] = wden(y, 'minimaxi', 's', 'sln', 2, 'db4');

但是,我不确定我是否正确使用了这种方法!如果我的时间序列是水温,它是环境数据序列的特征,即低频高功率(例如季节循环)和高频低功率(例如迪尔循环),我希望消除由内部波动引起的噪声湖泊(导致温度突然升高或降低),我应该使用此处显示的小波还是有更好的小波可以使用?

1个回答

首先,评论 - 在去噪之前,您基本上是将数据从(时间)域转换为小波域。这只不过是对用户选择的基函数的一系列数据预测。(小波)。

当你去噪时,你会将(表面上)属于噪声的系数归零或缩小。

现在,假设您选择了一种小波类型,当您转换无噪声信号时,第一个系数是某个数字,其余的都是零。这意味着您知道,您的纯信号将始终为您提供非零作为小波域中的第一个系数,而其他系数始终为零。

现在想象一下,您转换了嘈杂的信号。您可能仍然会看到第一个系数的值很高(属于您的真实数据),但是您期望为零的所有其他系数都有一些小的值。如果您将它们归零并进行逆变换,则您已经对信号进行了降噪。

然后,您要回答的问题就变成了“哪种小波类型,当针对我的数据进行投影时,给了我小波域中最稀疏的表示?” 换句话说,哪个小波在针对您的(纯的、无噪声的)数据使用时,会为您提供大部分为零的系数?

从数学上讲,您想要的是一个具有与您的数据模板一样多的消失时刻的小波。

示例:例如,假设知道您的数据模板(在您的情况下,没有内部波动损坏的温度)是 0 阶多项式(一个常数),那么您想使用 Haar 小波,因为它有 1 个消失时刻。这意味着如果您将纯信号转换为 Haar 域,则大多数系数将为零。但是,当您使用内部波损坏转换数据时,通常为零的系数现在具有一些值,然后您可以对其进行破坏和逆变换。

其他模板也可以这样说。假设您的纯数据是最大次数为 7 的多项式。这意味着您想要一个使我的最大次数为 7 的多项式消失的小波,或者换句话说,有 8 个消失时刻。这将使您的信号在变换域中看起来非常稀疏,因此任何其他更高阶的噪声都会使其不那么稀疏,并且您可以通过删除那些应该为零的可疑系数来进行降噪。