在这个视频中,我们将讨论如何使用MATLAB使用离散小波变换去噪信号。让我们加载一个信号并在MATLAB中绘制它。这里有两个信号:第一个是原始信号,第二个是添加了一些噪声的原始信号。我们的目标是利用离散小波变换去噪噪声信号。
很快你就会看到在MATLAB中这样做是多么容易。下面是小波去噪的步骤概述:
1.你的第一步是获得近似和细节系数。通过执行多级小波分解来实现这一点。回想一下,离散小波变换将信号分为低通子带(也称为“近似级”)和高通子带(也称为“细节级”)。您可以在多个级别或尺度上分解近似子带,以进行精细尺度分析。
2.第二步是分析细节并确定合适的阈值分割技术。我将在后面的视频中讲到这个。
3.第三步是对细节系数进行阈值处理,重构信号。让我们首先使用函数波分解来进行多级小波分解。我们将使用sym6小波将噪声信号分解为五个级别。该函数输出第5级近似系数以及从第1级到第5级的细节系数。第一级细节系数捕捉信号的高频。
大部分高频内容包括信号中存在的噪声。然而,高频的一部分是由信号的突变组成的。有时,这些突然的变化具有意义,您可能希望在去除噪声的同时保留这些信息。让我们仔细看看子带的细节。要提取系数,可以使用检测函数并绘制每个级别的系数。我使用一个辅助函数来提取和绘制系数。你在这里看到的是原始信号,以及一到五层的细节。注意,活动随着规模或水平的增加而急剧减少。所以,我们将专注于第一级的细节,暂时忽略其他的。我们的目标是保留这些鲜明的变化,同时去除噪音。 One way to do this is by scaling the detail coefficients by a threshold. There are four main techniques available in MATLAB to help you compute a threshold for the purpose of denoising. The universal threshold is the simplest to compute and is computed using this formula.
手动计算其他三种去噪技术的阈值就不那么简单了。相反,您可以使用MATLAB来实现这一点,这样您就可以专注于使用阈值,而不必担心如何计算它。应用阈值有两种方法。有两种阈值操作,软阈值和硬阈值。在这两种情况下,大小小于阈值的系数都被设为零。这两种阈值操作的区别在于它们如何处理大于阈值的系数。在软阈值处理中,通过将阈值与系数值相减,将大于阈值的系数缩小为零,而在硬阈值处理中,大于阈值的系数保持不变。回到我们的例子,让我们使用带有软阈值技术的Sure Shrink去噪我们的噪声信号。如果您不确定选择哪种技术,软阈值是一个很好的起点。
阈值系数和从新系数重建信号的整个过程可以使用如下所示的单一函数完成。第一个参数f是噪声信号。第二个参数指定阈值化技术;在这种情况下,肯定的心理医生。S表示软阈值,参数SLN表示使用基于一级系数的噪声单估计进行阈值缩放。Level表示小波分解级别,最后一个参数指定小波,在本例中为sym6。函数wden对输入信号进行多级分解,计算并将阈值应用于细节系数,用新的细节系数重构信号,并将其作为输出提供。现在让我们使用plot命令来比较噪声信号和去噪信号,去噪信号是前一步的输出。显然,去噪后的版本噪音更小。
您还可以将我们前面讨论的去噪技术与其他去噪技术(如Savitzky-Golay滤波或移动平均技术)的性能进行比较。可以看出,小波去噪方法优于其他去噪技术。因此,使用小波技术去噪信号的好处是显而易见的。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。