主要内容

wdenoise

小波信号去噪

描述

例子

XDEN= wdenoise (X中的数据去噪X使用带有柯西先验的经验贝叶斯方法。默认情况下,sym4小波与后验中值阈值规则一起使用。去噪降到最小值地板(日志2N而且wmaxlev (N,“sym4”)在哪里N是数据中的样本数量。(有关更多信息,请参见wmaxlev.)X实值向量、矩阵或时间表。

  • 如果X是一个矩阵,wdenoise的每一列去噪X

  • 如果X是一个时间表,wdenoise必须在单独的变量中包含实值向量,或数据的一个实值矩阵。

  • X假设是均匀采样。

  • 如果X是一个时间表,时间戳不是线性间隔的,wdenoise发出警告。

XDEN= wdenoise (X水平消除干扰X水平水平一个正整数是否小于或等于地板(日志2N)在哪里N是数据中的样本数量。如果未指定的,水平默认为的最小值地板(日志2N而且wmaxlev (N,“sym4”)

例子

XDEN= wdenoise (___名称,值除以前语法中的任何输入参数外,还使用名称-值对参数指定一个或多个选项。例如,xden = wdenoise(x,3,"Wavelet","db2")消除干扰x用Daubechies降至第三层db2小波。

XDENDENOISEDCFS= wdenoise(___返回单元格数组中去噪的小波和缩放系数DENOISEDCFS.的要素DENOISEDCFS是按分辨率递减顺序排列的。的最后一个元素DENOISEDCFS包含近似(缩放)系数。

XDENDENOISEDCFSORIGCFS= wdenoise(___返回单元格数组中的原始小波和缩放系数ORIGCFS.的要素ORIGCFS是按分辨率递减顺序排列的。的最后一个元素ORIGCFS包含近似(缩放)系数。

例子

全部折叠

使用默认值获取噪声信号的去噪版本。

负载noisdoppXden = wdenoise(noisdopp);

绘制原始信号和去噪信号。

Plot ([noisdopp' xden'])“原始信号”“去噪信号”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象代表原始信号,去噪信号。

使用块阈值将噪声数据的时间表降噪到5级。

加载一个噪声数据集。

负载wnoisydata

使用块阈值将数据降噪到5级

xden = w降噪(wnoisydata,5,降噪方法=“BlockJS”);

绘制原始数据和去噪后的数据。

H1 = plot(wnoisydata.t,[wnoisydata.noisydata(:,1) xden.noisydata(:,1)]);h1(2)。LineWidth = 2;传奇(“原始”“去噪”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象代表原始,去噪。

用不同的方法去噪信号并比较结果。

加载一个包含信号的干净版本和有噪声版本的数据文件。把信号画出来。

负载fdata情节(fNoisy)情节(fClean)网格传奇(“吵”“清洁”)举行

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象代表嘈杂的、干净的。

信号去噪使用sym4而且db1小波,用九级小波分解。画出结果。

cleansym = wdenoise(fnoise,9,小波=“sym4”);cleandb = wdenoise(fnoise,9,小波=“db1”);图子图(2,1,1)图(cleansym)标题(“去噪- sym”网格)Subplot (2,1,2) plot(cleandb)标题(“去噪- db”网格)

图中包含2个轴对象。标题为Denoised - sym的坐标轴对象1包含一个类型为line的对象。标题为Denoised - db的Axes对象2包含一个类型为line的对象。

计算每个去噪信号的信噪比。确认是否使用sym4小波产生了更好的结果。

snrsym = -20*log10(norm(abs(fClean-cleansym))/norm(fClean)))
Snrsym = 35.9623
snrdb = -20*log10(norm(abs(fClean- cleanb))/norm(fClean)))
SNRDB = 32.2672

加载一个包含100个时间序列噪声数据的文件。每个时间序列都是一个有噪声的版本fClean.对时间序列去噪两次,在每种情况下估计不同的噪声方差。

负载fdataTScleanTSld = wdenoise(fdataTS,9,NoiseEstimate=“LevelDependent”);cleanTSli = wdenoise(fdataTS,9,NoiseEstimate=“LevelIndependent”);

比较一个有噪声的时间序列和它的两个去噪版本。

图(fdataTS.Time,fdataTS.fTS15)“原始”网格)

图中包含一个轴对象。标题为Original的axes对象包含一个类型为line的对象。

图subplot(2,1,1) plot(cleanTSli.Time,cleanTSli.fTS15) title(“独立”网格)subplot(2,1,2) plot(cleanTSld.Time,cleanTSld.fTS15) title(“依赖”网格)

图中包含2个轴对象。标题为Level Independent的坐标轴对象1包含一个line类型的对象。标题Level Dependent的Axes对象2包含一个line类型的对象。

输入参数

全部折叠

输入数据,指定为矩阵、向量或实数时间表。如果X是一个向量,它必须至少有两个样本。如果X是矩阵或时间表,它必须至少有两行。

数据类型:

小波分解的级别,指定为正整数。水平一个正整数是否小于或等于地板(日志2N)在哪里N是数据中的样本数量。

  • 如果未指定的,水平默认为的最小值地板(日志2N而且wmaxlev (N,“sym4”)

  • 对于James-Stein块阈值,“BlockJS”,肯定有地板(日志2N)在最粗糙的分辨率水平上的系数,水平

数据类型:

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

例子:xden = wdenoise(x,4,Wavelet="db6")消除干扰x用Daubechies降到4级db6小波。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:“小波”、“db6”、“DenoisingMethod”、“贝叶斯”使用Daubechies去噪db6小波和经验贝叶斯方法。

小波,指定为字符向量或字符串标量。小波必须是正交或双正交的。在小波管理器中将正交小波和双正交小波分别指定为1型小波和2型小波,wavemngr

  • 有效的内建正交小波族为:“提单”)、贝尔金(“beyl”)、Coiflets (“头巾”)、Daubechies (“数据库”), Fejér-Korovkin (“颗”)、哈尔(“哈雾”), Han线性相位矩(“汉”)、Morris最小带宽(“m”)、Symlets (“符号”)和Vaidyanathan (“乌”).

  • 有效的内置双正交小波族为:双正交样条(“bior”)、反向双正交样条(“rbio”).

有关每个家族的小波列表,请参见wfilters.你也可以使用waveinfo用小波族简称。例如,waveinfo (db).使用wavemngr(“类型”,wn来确定小波wn正交(返回1)或双正交(返回2)。例如,wavemngr(“类型”、“db6”)返回1。

去噪方法用于确定数据去噪阈值X

  • 贝叶斯-经验贝叶斯

    该方法使用阈值规则,基于假设测量具有混合模型给出的独立先验分布。由于测量被用来估计混合模型中的权重,该方法往往在更多的样本中工作得更好。默认情况下,后验中值规则用于衡量风险[8]

  • BlockJS-布洛克·詹姆斯·斯坦

    该方法基于确定“最佳块大小和阈值”。由此得到的块阈值估计器同时产生最优的全局和局部自适应[3]

  • 罗斯福-错误发现率

    该方法采用基于控制假阳性检测与所有阳性检测的期望比率的阈值规则。的罗斯福方法对稀疏数据最有效。选择一个比例,或者-value,小于1/2产生一个渐近极大极小估计量[1]

  • 极大极小-极小极大估计

    该方法使用一个固定的阈值选择产生最小最大性能的均方误差相对于一个理想的程序。在统计学中使用极大极小原理来设计估计器。看到thselect获取更多信息。

  • 确定-斯坦无偏风险估计

    该方法采用基于Stein无偏风险估计(二次损失函数)的阈值选择规则。对于特定的阈值(t).尽量减少(t)给出阈值的选择。

  • UniversalThreshold-通用阈值 2 ln 长度 x

    该方法使用固定形式的阈值,产生极大极小性能乘以成比例的小因子日志(长度(X))

请注意

“罗斯福”时,有一个可选参数-value,表示误报的比例。之间是一个实值标量吗0而且1/20 << = 1/2.指定“罗斯福”与一个-value,使用单元格数组,其中第二个元素是价值。例如,“DenoisingMethod”{“罗斯福”,0.01}.如果未指定的,默认为0.05

阈值规则,指定为字符数组,用于缩小小波系数。“ThresholdRule”对所有去噪方法有效,但有效的选项和默认值取决于去噪方法。不同去噪方法的可能规则如下:

  • “BlockJS”—唯一支持的选项是金宝app“James-Stein”.您不需要指定ThresholdRule“BlockJS”

  • “确定”“极小极大”“UniversalThreshold”-有效选项为“软”“硬”.默认为“软”

  • “贝叶斯”-有效选项为“中值”“的意思是”“软”,或“硬”.默认为“中值”

  • “罗斯福”—唯一支持的选项是金宝app“硬”.您不需要定义ThresholdRule“罗斯福”

估计数据中噪声方差的方法。

  • “LevelIndependent”-基于最精细(最高分辨率)的小波系数估计噪声的方差。

  • “LevelDependent”-根据每个分辨率级别的小波系数估计噪声的方差。

指定NoiseEstimate“BlockJS”去噪方法没有效果。块James-Stein估计器总是使用“LevelIndependent”噪声估计。

输出参数

全部折叠

去噪矢量,矩阵,或时间表版本X.对于时间表输入,XDEN具有与原始时间表相同的变量名称和时间戳。

数据类型:

去噪后数据的小波和尺度系数XDEN,在单元格数组中返回。的要素DENOISEDCFS是按分辨率递减顺序排列的。的最后一个元素DENOISEDCFS包含近似(缩放)系数。

数据类型:

数据的原始小波和标度系数X,在单元格数组中返回。的要素ORIGCFS是按分辨率递减顺序排列的。的最后一个元素ORIGCFS包含近似(缩放)系数。

数据类型:

算法

噪声信号最一般的模型有以下形式:

年代 n f n + σ e n

在时间n等距。在最简单的模型中,假设en)为高斯白噪声N(0,1),噪声级σ = 1。去噪的目的是抑制信号中的噪声部分年代为了恢复f

去噪过程分为三步:

  1. 分解——选择一个小波,然后选择一个级别N.计算信号的小波分解年代在层次N

  2. 详细系数阈值-为每个级别从1到N,选择阈值,对细节系数进行软阈值处理。

  3. 重建-基于原始的水平近似系数计算小波重建N将层次细节系数从1修改为N

关于阈值选择规则的详细信息见小波去噪与非参数函数估计在帮助下thselect函数。

参考文献

阿布拉莫维奇、F.本杰明尼、D. L.多诺霍和I. M.约翰斯通。《通过控制错误发现率适应未知稀疏性》统计年鉴, Vol. 34, no . 2, pp. 584-653, 2006。

[2]安东尼亚迪斯,A.和G.奥本海姆编。小波与统计.统计学课堂讲稿。纽约:施普林格Verlag, 1995年。

蔡婷婷,《小波回归中的块阈值:自适应、块大小和阈值水平》。Statistica中央研究院,第12卷,第1241-1273页,2002。

[4] Donoho, d.l.《小波分析与WVD的进展:十分钟之旅》。小波分析及其应用进展(Y. Meyer, S. Roques,编)。Gif-sur-Yvette: Editions Frontières, 1993。

[5]多诺霍,d.l., i.m.约翰斯通。“小波收缩的理想空间适应性”生物统计学,第81卷,第425-455页,1994。

[6] Donoho, d.l.“软阈值去噪”。IEEE信息论汇刊,第42卷,第3期,第613-627页,1995年。

[7]多诺霍,d.l., i.m.约翰斯通,G.克基亚查里安,D.皮卡德。“小波收缩:渐近?”皇家统计学会杂志B系列,第57卷,第2期,第301-369页,1995年。

[8]约翰斯通,i.m.和b.w.西尔弗曼。干草堆中的针和稻草:可能稀疏序列的经验贝叶斯估计。统计年鉴,卷32,第4期,第1594-1649页,2004年。

扩展功能

版本历史

在R2017b中引入