阈值获取和阈值降噪

简述阈值获取和信号的阈值降噪

一、阈值获取
     MATLAB中实现阈值获取的函数有ddencmpthselectwbmpenwwdcbm,下面对它们的用法进行简单的说明
     1ddencmp的调用格式有以下三种:
     1[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,IN2,X)
     2[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wp',X)
     3[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wv',X)
       函数ddencmp用于获取信号在消噪或压缩过程中的默认阈值。输入参数X为一维或二维信号;IN1取值为'den''cmp''den'表示进行去噪,'cmp'表示进行压缩;IN2取值为'wv''wp'wv表示选择小波,wp表示选择小波包。返回值THR是返回的阈值;SORH是软阈值或硬阈值选择参数;KEEPAPP表示保存低频信号;CRIT是熵名(只在选择小波包时使用)。
     2、函数thselect的调用格式如下:
      THR=thselect(X,TPTR);
    根据字符串TPTR定义的阈值选择规则来选择信号X的自适应阈值。自适应阈值的选择规则(基于模型 y = f(t) + ee是高斯白噪声N(0,1))包括以下四种:

       *TPTR='rigrsure',自适应阈值选择使用Stein的无偏风险估计原理。
       *TPTR='heursure',使用启发式阈值选择。所选择的是最优预测变量阈值,如果信噪比很小,而sure估计有很大的噪声,这种情况下就采用这种固定的阈值形式。
       *TPTR='sqtwolog',阈值等于sqrt(2*log(length(X))).
       *TPTR='minimaxi',用极大极小原理选择阈值。它所产生的是一个最小均方差的极值,而不是无误差。
     3函数wbmpen的调用格式如下:
       THR=wbmpen(C,L,SIGMA,ALPHA);

该函数返回去噪的全局阈值THRTHR通过给定的一种小波系数选择规则计算得到,小波系数选择规则使用Birge-Massart的处罚算法。{C,L]是进行去噪的信号或图像的小波分解结构;SIGMA是零均值的高斯白噪声的标准偏差;ALPHA是用于处罚的调整参数,它必须是一个大于1的实数,一般去ALPHA=2
       4wdcbm的调用格式有以下两种:
         1[THR,NKEEP]=wdcbm(C,L,ALPHA);
         2[THR,NKEEP]=wdcbm(C,L,ALPHA,M);
         函数wdcbm是使用Birge-Massart算法获取一维小波变换的阈值。返回值THR是与尺度无关的阈值,NKEEP是系数的个数。[C,L]是要进行压缩或消噪的信号在j=length(L)-2层的分解结构;LAPHAM必须是大于1的实数;THR是关于j的向量,THRi)是第i层的阈值;NKEEP也是关于j的向量,NKEEP(i)是第i层的系数个数。一般压缩时ALPHA1.5,去噪时ALPHA3
二、信号的阈值去噪
    MATLAB中实现信号的阈值去噪的函数有wdenwdencmpwthreshwthcoefwpthcoef以及wpdencmp。下面对它们的用法作简单的介绍。
     1、函数wden的调用格式有以下两种:
      1[XD,CXD,LXD]=wden(X,TPTR,SORH,SCAL,N,'wname')
      2[XD,CXD,LXD]=wden(C,L,TPTR,SORH,SCAL,N,'wname')
    函数wden用于一维信号的自动消噪。X为原始信号,[C,L]为信号的小波分解,N为小波分解的层数。
     THR为阈值选择规则:
     *TPTR='rigrsure',自适应阈值选择使用Stein的无偏风险估计原理。
    *TPTR='heursure',使用启发式阈值选择。
    *TPTR='sqtwolog',阈值等于sqrt(2*log(length(X))).
    *TPTR='minimaxi',用极大极小原理选择阈值。
    SORH是软阈值或硬阈值的选择(分别对应's''h')。
    SCAL指所使用的阈值是否需要重新调整,包含下面三种:
     *SCAL='one'  不调整;
     *SCAL='sln'  根据第一层的系数进行噪声层的估计来调整阈值;
     *SCAL='mln'  根据不同的噪声估计来调整阈值。
     XD为消噪后的信号,[CXD,LXD]为消噪后信号的小波分解结构。格式(1)返回对信号X经过N层分解后的小波系数进行阈值处理后的消噪信号XD和信号XD的小波分解结构[CXD,LXD]。格式(2)返回参数与格式(1)相同,但其结构是由直接对信号的小波分解结构[C,L]进行阈值处理得到的。
     2、函数wdencmp的调用格式有以下三种:
   (1)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('gbl',X,'wname',N,THTR,SORH,KEEPAPP);
   (2)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',X,'wname',N,THTR,SORH);
   (3)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',C,L,'wname',N,THTR,SORH);
    函数wdencmp用于一维或二维信号的消噪或压缩。wname是所用的小波函数,gbl(global的缩写)表示每一层都采用同一个阈值进行处理,lvd表示每层采用不同的阈值进行处理,N表示小波分解的层数,THR为阈值向量,对于格式(2)和(3)每层都要求有一个阈值,因此阈值向量THR的长度为NSORH表示选择软阈值或硬阈值,参数KEEPAPP取值为1时,则低频系数不进行阈值量化,反之,低频系数要进行阈值量化。XC是进行消噪或压缩后的信号,[CXC,LXC]XC的小波分解结构,PERF0PERFL2是恢复或压缩L^2的范数百分比。如果[C,L]X的小波分解结构,则PERFL2=100*(CXC向量的范数/C向量的范数)^2;如果X是一维信号,小波wname是一个正交小波,则PERFL2=100||XC||^2/||X||^2
     3、函数wthresh的调用格式如下:
      Y=wthresh(X,SORH,T)
      Y=wthresh(X,SORH,T)

该函数返回输入向量或矩阵X经过软阈值(如果SORH='s')或硬阈值(如果SORH='h')处理后的信号。T是阈值。
      Y=wthresh(X,'s',T)返回的是Y=SIG(X)*(|X|-T)+,即把信号的绝对值与阈值进行比较,小于或等于阈值的点变为零,大于阈值的点为该点值与阈值的差值。
      Y=wthresh(X,'h',T)返回的是Y=X*1(|X|>T),即把信号的绝对值和阈值进行比较,小于或等于阈值的点变为零,大于阈值的点保持不变。一般来说,用硬阈值处理后的信号比用软阈值处理后的信号更粗糙。

    4、函数wthcoef的调用格式下面四种:
   1NC=wthcoef('d',C,L,N,P)
   2NC=wthcoef('d',C,L,N)
   3NC=wthcoef('a',C,L)
   4NC=wthcoef('t',C,L,N,T,SORH)
    函数wthcoef用于一维信号小波系数的阈值处理。格式(1)返回小波分解结构[C,L]经向量NP定义的压缩率处理后的新的小波分解向量NC[NC,L]构成一个新的小波分解结构。N包含被压缩的细节向量,P是把较小系数置0的百分比信息的向量。NP的长度必须相同,向量N必须满足1<=N(i)<=length(L)-2。格式(2)返回小波分解结构[C,L]经过向量N中指定的细节系数置0后的小波分解向量NC。格式(3)返回小波分解结构[C,L]经过近似系数置0后的小波分解向量NC。格式(4)返回小波分解结构[C,L]经过将向量N作阈值处理后的小波分解向量NC。如果SORH=s‘,则为软阈值;如果SORH='h'则为硬阈值。N包含细节的尺度向量,TN相对应的阈值向量。NT的长度必须相等。
      5、函数wpdencmp的调用格式有以下两种: (1)[XD,TREED,PERF0,PERFL2]=wpdencmp(X,SORH,N,'wname',CRIT,PAR,KEEPAPP)
(2)[XD,TREED,PERF0,PERFL2]=wpdencmp(TREE,SORH,CRIT,PAR,KEEPAPP)
     函数wpdencmp用于使用小波包变换进行信号的压缩或去噪。格式(1)返回输入信号X(一维或二维)的去噪或压缩后的信号XD。输出参数TREEDXD的最佳小波包分解树;PERFL2PERF0是恢复和压缩L2的能量百分比。PERFL2=100*(X的小波包系数范数/X的小波包系数)^2;如果X是一维信号,小波wname是一个正交小波,则PERFL2=100*||XD||^2/||X||^2SORH的取值为's''h',表示的是软阈值或硬阈值。输入参数N是小波包的分解层数,wname是包含小波名的字符串。函数使用由字符串CRIT定义的熵和阈值参数PAR实现最佳分解。如果KEEPAPP=1,则近似信号的小波系数不进行阈值量化;否则,进行阈值量化。格式(2)与格式(1)的输出参数相同,输入选项也相同,只是它从信号的小波包分解树TREE进行去噪或压缩。

  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB中,你可以使用软硬阈值降噪方法来降低信号或图像中的噪声。 软阈值降噪方法是通过对信号进行阈值处理来减小噪声的幅值。具体而言,对于信号中的每个样本,将其与一个预先设定的阈值进行比较。如果样本的幅值小于阈值,那么该样本将被设置为0(或其他小的幅值),从而减小噪声的影响。如果样本的幅值大于阈值,那么该样本将保持不变。 硬阈值降噪方法也是一种常用的降噪技术。与软阈值不同,硬阈值将信号样本的幅值与阈值进行比较,并将小于阈值的样本设置为0,将大于等于阈值的样本保持不变。这种方法可以快速去除噪声,但可能会导致信号的失真。 在MATLAB中,你可以使用`wthresh`函数来实现软硬阈值降噪。以下是一个示例代码: ```matlab % 生成含有噪声的信号 t = 0:0.01:1; x = sin(2*pi*5*t) + randn(size(t)); % 设置阈值 soft_threshold = 0.5; hard_threshold = 1.0; % 软阈值降噪 x_soft = wthresh(x, 's', soft_threshold); % 硬阈值降噪 x_hard = wthresh(x, 'h', hard_threshold); % 绘制结果 subplot(3,1,1); plot(t, x); title('原始信号'); subplot(3,1,2); plot(t, x_soft); title('软阈值降噪'); subplot(3,1,3); plot(t, x_hard); title('硬阈值降噪'); ``` 在上面的代码中,我们首先生成了一个包含噪声的信号`x`,然后分别使用软阈值和硬阈值对该信号进行降噪。最后,我们通过绘图将结果可视化展示出来。 希望这个例子可以帮助你理解软硬阈值降噪MATLAB中的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值