主要内容

用小波信号去噪对信号去噪

这个例子展示了如何使用小波信号降噪应用程序去噪一个实值一维信号。您可以创建和比较多个版本的去噪信号与应用程序,并导出所需的去噪信号到您的MATLAB®工作空间。为了在您的工作空间中再现去噪信号,或者将相同的去噪参数应用于其他数据,您可以生成并编辑一个MATLAB脚本。这个示例演示了一种可能的工作流。

将数据导入应用程序

将数据加载到MATLAB工作区中。的.mat文件包含一个信号的干净版本和一个噪声版本。把两个版本的信号都画出来。

负载fdata情节(fNoisy'b-') 抓住情节(FCLean,的r -“线宽”,2)传奇(噪声信号的'清洁信号'网格)

图中包含一个坐标轴。轴线包含2个线型对象。这些对象分别表示噪声信号和清洁信号。

打开小波信号Denoiser应用程序。从Matlab Toolstrip,打开应用程序选项卡,在信号处理与通信,点击小波信号降噪.你也可以通过输入来启动应用程序WaveletSignaldenoiser.在MATLAB命令提示符处。

通过单击将来自Workspace的嘈杂信号加载到应用程序中负载信号在将来发布。从可以加载到应用程序的工作区变量列表中,选择fNoisy并点击好的

该应用程序导入噪声信号,并立即使用默认参数去噪。

检查导入数据

检查fNoisy情节。应用程序绘制出原始信号,fNoisy,去噪信号,fnoisy1,以及信号的粗尺度近似,近似

1.去噪信号窗格列出了所有版本的去噪信号。该列表目前仅包含使用默认名称创建的应用程序的信号,fnoisy1

  • 您可以通过右键单击更改默认名称,选择重命名去噪信号从菜单中,在对话框中输入新名称,然后单击好的

  • 您可以通过右键单击其名称并选择来删除去噪信号删除去噪信号从弹出菜单。

2.的当前小波参数窗格列出应用于创建的去噪参数fnoisy1

3.缩放和平移感兴趣的区域。首先,将光标放在情节上以显示浮动的调色板。然后从面板中选择所需的操作。

  • 当您选择放大或缩小时,鼠标滚轮控制放大。

4.切换哪些信号是可见的fNoisy情节:

  • 点击信号工具栏中的▼,并使用下拉菜单切换原始信号图和去噪信号图的可见性。

  • 单击绘图图例中的各个信号。

5.检查系数情节。

红色的系数用于重建去噪信号。的当前小波参数窗格表示使用9级小波分解去噪信号。

缩放和平移感兴趣的区域。首先,将光标放在情节上以显示浮动的调色板。然后从面板中选择所需的操作。

  • 当您选择放大或缩小时,鼠标滚轮控制缩放而不是滚动条。

  • 当你放大,缩小,或者平移D1系数级,缩放适用于所有级别。

修改去噪参数

单击小波选项卡。使用此工具条调整和应用降噪参数的选择去噪信号。

列出的值是用于创建去噪信号的参数,fnoisy1.要修改这些设置的值,在工具条中从左到右工作:

1.在小波下拉菜单,选择Daubechies小波族,db.因为这个动作:

  • 数量下拉字段更改为1.将值更改为2

  • 带有蓝色文本的横幅立即出现在fNoisy图,表示小波参数变化处于草图模式。当您对信号有任何未决的更改时,此文本就会出现。属性应用更改时,横幅会消失消除干扰按钮,或远离信号导航到另一个信号。

2.从方法下拉菜单,选择通用阈值

3.定义一个10级小波分解,改变的值水平10

4.改变方法通用阈值,规则设置自动从中位数.将设置更改为

5.点击等级相关

6.通过单击应用这些设置的新值消除干扰

当前小波参数窗格更新使用用于代位信号的新参数,并且应用程序重新发出去噪,fnoisy1

请注意:所有参数都是上下文相关的。一个参数的可能值可以依赖于另一个参数的当前选择值。你不能做出不相容的选择。例如,当去噪方法是FDR时,只有可能的阈值规则:hard。在此实例中,没有列出其他值规则下拉菜单。

复制去噪信号并比较近似

如果您喜欢一个特定的去噪信号,但希望探索更多的去噪参数,您可以复制它。然后可以修改副本的参数,而不丢失原始参数。

1.从去噪信号窗格中,选择fnoisy1.然后在工具条上,从信号降噪选项卡上,单击复制

  • 重复的信号,fNoisy1Copy,在去噪信号

  • 副本的去噪参数列于当前小波参数

  • 复制的部分用粗线绘制fNoisy情节。情节图例更新以包含副本。

2.在小波选项卡中,改变水平2,然后单击消除干扰.该应用程序使用两级小波分解对信号进行降噪。此外,应用程序:

  • 重新计算并绘制副本的近似值。

  • 更新系数绘制以显示副本的级别。

因为fNoisy1Copy的近似值。应用程序总是绘制当前选择的去噪信号的近似图。您可以如下演示此行为。在情节图例中,单击fnoisy1fNoisy1Copy.两个去噪信号的名称都消失了,这两个信号不再标绘。只有原始信号和近似图是可见的。

图中的虚线表示近似。因为fNoisy1Copy突出显示在去噪信号列表,绘制的近似是两层小波分解的结果。这种近似是相对嘈杂的。现在选择fnoisy1在列表中。10级小波分解的近似是不同的。

恢复原来的参数

通过添加一个新的去噪信号,您总是可以返回到使用原始的默认参数。从工具条,在信号降噪选项卡上,单击添加

  • 加进去的去噪信号,Fnoisy2.,以高亮显示去噪信号列表。默认的去噪参数列于当前小波参数

  • 新的去噪信号用粗线表示。计算并绘制了近似图。情节传奇更新包括Fnoisy2.

导出的结果

如果您想将相同的去噪参数应用于其他数据,您可以使用该应用程序生成一个脚本,以重新生成选定的去噪信号。然后,您可以根据自己的需要修改和保存脚本。要做进一步的分析,您可以将降噪信号导出到您的工作区。

出口脚本

点击Fnoisy2.去噪信号.在信号降噪选项卡中的出口▼”菜单中,选择生成MATLAB脚本.在你的MATLAB编辑器中打开一个无标题的脚本,带有以下可执行代码:

fNoisy2 = wdenoise (fNoisy 9...“小波”“sym4”...“DenoisingMethod”“贝叶斯...“ThresholdRule”“中值”...“NoiseEstimate”“LevelIndependent”);

wdenoise输入参数由用于创建的值填充Fnoisy2..保存脚本,然后运行。这将创建变量Fnoisy2.在你的工作空间。

加载文件fdataTS.该文件包含100个时间序列的噪声数据。每个时间序列有4096个数据点。数据包含在类型中时间表变量fdataTS

负载fdataTS

将去噪参数应用于fdataTS,通过替换来编辑脚本fNoisyfdataTSFnoisy2.fdataTSclean.然后运行脚本。

fdataTSclean = wdenoise (fdataTS 9...“小波”“sym4”...“DenoisingMethod”“贝叶斯...“ThresholdRule”“中值”...“NoiseEstimate”“LevelIndependent”);

将第15个嘈杂的时间序列与其去噪版本进行比较。

子图(2,1,1)绘图(FDATATS.TIME,FDATATS.FTS15)标题('原始时间序列'网格)次要情节(2,1,2)情节(fdataTSclean.Time fdataTSclean.fTS15)标题(运用时间序列的网格)

图中包含2个轴。标题为“原始时间序列”的坐标轴1包含一个类型为line的对象。标题为“去噪时间序列”的坐标轴2包含一个类型为line的对象。

出口去噪信号

点击Fnoisy2.去噪信号.然后在工具条上,从信号降噪选项卡,单击上面的绿色复选标记出口▼。自Fnoisy2.已经存在于您的工作区中,您可以强制导出并覆盖工作区变量。或者,您可以取消导出,在应用程序中重命名去噪信号或工作区变量,并再次导出。一个标志出现确认信号被导出。要永久删除横幅,请单击X关闭或导入一个新信号到应用程序。

因为您的工作空间中有一个干净的信号,所以计算去噪信号的信噪比。

snrWavelet = -20 * log10(规范(abs (fClean-fNoisy2)) /规范(fClean))
snrWavelet = 35.9623

如果您使用移动的平均滤波器和Savitzky-Golay滤波器的信号处理工具箱™表示信号,并计算每个去噪信号的SNR。

fmv = smoothdata (fNoisy,“movmean”25);Snrmovingaverage = -20 * log10(常见(abs(fclean-fmv))/ norm(fclean))
snrmovingaverage = 26.0040.
fsg = smoothdata(fnoisy,“sgolay”25);snrSavitskyGolay = -20 * log10(规范(abs (fClean-fsg)) /规范(fClean))
snrSavitskyGolay = 28.8932

你取得了卓越的结果去噪与sym4小波。

另请参阅

功能

应用程序

相关话题