找回密码
 注册
关于网站域名变更的通知
查看: 492|回复: 1
打印 上一主题 下一主题

MATLAB中的小波阈值去噪

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-7-23 15:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

MATLAB中实现了信号的阈值去噪,主要包括阈值去噪和阈值获取两方面。


& c7 d4 G1 u3 {  |) N3 ~1.阈值获取
. u. u& f- y! E. C+ Z; J  \0 W% YMATLAB中实现阈值获取的函数有ddencmp、thselect、wbmpen和wwdcbm,下面对它们的用法进行简单的说明。

ddencmp的调用格式有以下三种:6 N* N0 W+ s) d  D" s1 k: _  H
(1)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,IN2,X)
' }! O$ E! J" }! x0 Z8 H, t. X(2)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wp',X)2 Y5 z3 x# A' W, P- O' M
(3)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wv',X)1 H1 @2 I4 O% x6 T& P9 r7 m$ R
函数ddencmp用于获取信号在消噪或压缩过程中的默认阈值。输入参数X为一维或二维信号;IN1取值为'den'或'cmp','den'表示进行去噪,'cmp'表示进行压缩;IN2取值为'wv'或'wp',wv表示选择小波,wp表示选择小波包。返回值THR是返回的阈值;SORH是软阈值或硬阈值选择参数;KEEPAPP表示保存低频信号;CRIT是熵名(只在选择小波包时使用)。

函数thselect的调用格式如下:
. L: V! P9 L7 q7 `: d6 pTHR=thselect(X,TPTR);' L7 s. j- P2 n5 h7 Z; G+ x
THR=thselect(X,TPTR)根据字符串TPTR定义的阈值选择规则来选择信号X的自适应阈值。; }" A5 q% P6 l3 A5 q9 e
自适应阈值的选择规则包括以下四种:
* d6 R5 ]1 o) R. E*TPTR='rigrsure',自适应阈值选择使用Stein的无偏风险估计原理。
' Z3 W- L4 I0 d4 \( Z*TPTR='heursure',使用启发式阈值选择。
9 |6 G4 N& j. h& z& \*TPTR='sqtwolog',阈值等于sqrt(2*log(length(X))).
" ^- G0 P* [# U; P: y5 X*TPTR='minimaxi',用极大极小原理选择阈值。
7 D% T  K* D7 u; T" s6 T& `( J阈值选择规则基于模型 y = f(t) + e,e是高斯白噪声N(0,1)。

函数wbmpen的调用格式如下:# I; q, q" |  ?4 G) G5 F  }
THR=wbmpen(C,L,SIGMA,ALPHA);* B6 h% \; L' E) O3 r
THR=wbmpen(C,L,SIGMA,ALPHA)返回去噪的全局阈值THR。THR通过给定的一种小波系数选择规则计算得到,小波系数选择规则使用Birge-Massart的处罚算法。{C,L]是进行去噪的信号或图像的小波分解结构;SIGMA是零均值的高斯白噪声的标准偏差;ALPHA是用于处罚的调整参数,它必须是一个大于1的实数,一般取ALPHA=2。' r/ B3 N' p9 P4 Z+ d9 r  K
设t*使crit(t)=-sum(c(k)^2,k<=t) + 2 * SIGMA^2 * t*(ALPHA+log(n/t))的最小值,其中c(k)是按绝对值从大到小排列的小波包系数,n是系数的个数,则THR=|c(t*)|。
4 f) `0 e* T% y2 I6 D, `8 cwbmpen(C,L,SIGMA,ALPHA,ARG)计算阈值并画出三条曲线。+ g" W% W5 G- C8 m% {
2 * SIGMA^2 * t*(ALPHA+log(n/t))
6 T4 g7 n  {8 ^/ v& K5 Q: B" Q0 Vsum(c(k)^2, k<=t)& k# u; g9 u! H7 w& C
crit(t)

wdcbm的调用格式有以下两种:
  b' N) z& B% i# z" }(1)[THR,NKEEP]=wdcbm(C,L,ALPHA);7 r9 B8 Y5 W* A2 C% r" ?
(2)[THR,NKEEP]=wdcbm(C,L,ALPHA,M);, D% C) Y# [" S# R- e
函数wdcbm是使用Birge-Massart算法获取一维小波变换的阈值。返回值THR是与尺度无关的阈值,NKEEP是系数的个数。[C,L]是要进行压缩或消噪的信号在j=length(L)-2层的分解结构;LAPHA和M必须是大于1的实数;THR是关于j的向量,THR(i)是第i层的阈值;NKEEP也是关于j的向量,NKEEP(i)是第i层的系数个数。一般压缩时ALPHA取1.5,去噪时ALPHA取3.


* P2 O0 k- U' J- U& z$ y: z* K8 r5 g0 B2.信号的阈值去噪
6 \' s4 m7 G' a5 PMATLAB中实现信号的阈值去噪的函数有wden、wdencmp、wthresh、wthcoef、wpthcoef以及wpdencmp。下面对它们的用法作简单的介绍。

函数wden的调用格式有以下两种:( W5 l0 h* E5 Q8 I/ B
(1)[XD,CXD,LXD]=wden(X,TPTR,SORH,SCAL,N,'wname')
( D1 B8 u, y# \8 R(2)[XD,CXD,LXD]=wden(C,L,TPTR,SORH,SCAL,N,'wname')
8 B( x8 @8 w* }' H! m- U1 A函数wden用于一维信号的自动消噪。X为原始信号,[C,L]为信号的小波分解,N为小波分解的层数。
/ J: {/ w! ?- M. ]3 {' v; HTHR为阈值选择规则:
* B( k" e) \, X3 Y, N" ?! z6 k*TPTR='rigrsure',自适应阈值选择使用Stein的无偏风险估计原理。& L* l& k! J2 L1 t9 W
*TPTR='heursure',使用启发式阈值选择。
, s( j( n6 o' X' R5 P6 t*TPTR='sqtwolog',阈值等于sqrt(2*log(length(X))).
- u3 W# N0 m- {1 m8 s* n*TPTR='minimaxi',用极大极小原理选择阈值。
  y2 {) O# v4 ?1 zSORH是软阈值或硬阈值的选择(分别对应's'和'h')。
4 J# |( s$ B+ M+ MSCAL指所使用的阈值是否需要重新调整,包含下面三种:
. M% J1 H9 e$ [5 @& z1 @*SCAL='one' 不调整;" G% e3 Z$ y3 }  y* c5 O7 v
*SCAL='sln' 根据第一层的系数进行噪声层的估计来调整阈值。
/ A, @/ ^3 f! P; W. u* w# L5 X*SCAL='mln' 根据不同的噪声估计来调整阈值。
* e" W! C7 B1 x. L5 s! oXD为消噪后的信号,[CXD,LXD]为消噪后信号的小波分解结构。格式(1)返回对信号X经过N层分解后的小波系数进行阈值处理后的消噪信号XD和信号XD的小波分解结构[CXD,LXD]。格式(2)返回参数与格式(1)相同,但其结构是由直接对信号的小波分解结构[C,L]进行阈值处理得到的。

函数wdencmp的调用格式有以下三种:
( l2 _# H9 W8 Q! C  @1 U. t(1)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('gbl',X,'wname',N,THTR,SORH,KEEPAPP);
# W: ]: m+ c/ M6 F7 n(2)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',X,'wname',N,THTR,SORH);
' Z$ x1 u' ^: k/ P# {" G7 U(3)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',C,L,'wname',N,THTR,SORH);
* X# u5 z" @% c# h+ |5 V函数wdencmp用于一维或二维信号的消噪或压缩。wname是所用的小波函数,gbl(global的缩写)表示每一层都采用同一个阈值进行处理,lvd表示每层采用不同的阈值进行处理,N表示小波分解的层数,THR为阈值向量,对于格式(2)和(3)每层都要求有一个阈值,因此阈值向量THR的长度为N,SORH表示选择软阈值或硬阈值(分别取值为's'和'h'),参数KEEPAPP取值为1时,则低频系数不进行阈值量化,反之,低频系数要进行阈值量化。XC是要进行消噪或压缩的信号,[CXC,LXC]是XC的小波分解结构,PERF0和PERFL2是恢复或压缩L^2的范数百分比。如果[C,L]是X的小波分解结构,则PERFL2=100*(CXC向量的范数/C向量的范数)^2;如果X是一维信号,小波wname是一个正交小波,则PERFL2=100||XC||^2/||X||^2。

函数wthresh的调用格式如下:
0 g  R2 R- q) fY=wthresh(X,SORH,T)
! J# h, I* _9 l1 e& CY=wthresh(X,SORH,T) 返回输入向量或矩阵X经过软阈值(如果SORH='s')或硬阈值(如果SORH='h')处理后的信号。T是阈值。6 p! S- z! T5 [7 M0 {$ x
Y=wthresh(X,'s',T)返回的是Y=SIG(X)*(|X|-T)+,即把信号的绝对值与阈值进行比较,小于或等于阈值的点变为零,大于阈值的点为该点值与阈值的差值。
, u, J5 F1 e& w' P! TY=wthresh(X,'h',T)返回的是Y=X*1(|X|>T),即把信号的绝对值和阈值进行比较,小于或等于阈值的点变为零,大于阈值的点保持不变。一般来说,用硬阈值处理后的信号比用软阈值处理后的信号更粗糙。

函数wthcoef的调用格式下面四种:3 |' K+ S) L6 d, C
(1)NC=wthcoef('d',C,L,N,P)
3 R  k; J; T- q" r& Z  \( j1 v(2)NC=wthcoef('d',C,L,N)) `# O% J& D2 M8 M% g
(3)NC=wthcoef('a',C,L)2 W; C) X: F7 I8 n5 l
(4)NC=wthcoef('t',C,L,N,T,SORH)& v# u- a+ ]+ y$ |8 _- ]
函数wthcoef用于一维信号小波系数的阈值处理。
; O( x3 K7 C% O格式(1)返回小波分解结构[C,L]经向量N和P定义的压缩率处理后的新的小波分解向量NC,[NC,L]构成一个新的小波分解结构。N包含被压缩的细节向量,P是把较小系数置0的百分比信息的向量。N和P的长度必须相同,向量N必须满足1<=N(i)<=length(L)-2。
) w- V. I9 V6 \* M. I2 }4 l格式(2)返回小波分解结构[C,L]经过向量N中指定的细节系数置0后的小波分解向量NC。
. y, v: `1 t7 s) r. U格式(3)返回小波分解结构[C,L]经过近似系数置0后的小波分解向量NC。. w2 ?% [, W5 L$ x. }8 O2 Q$ \
格式(4)返回小波分解结构[C,L]经过将向量N作阈值处理后的小波分解向量NC。如果SORH=’s‘,则为软阈值;如果SORH='h'则为硬阈值。N包含细节的尺度向量,T是N相对应的阈值向量。N和T的长度必须相等。

函数wpdencmp的调用格式有以下两种:
# k* O( W$ P' y0 v- o(1)[XD,TREED,PERF0,PERFL2]=wpdencmp(X,SORH,N,'wname',CRIT,PAR,KEEPAPP)
7 l, Z4 }6 I! W7 D(2)[XD,TREED,PERF0,PERFL2]=wpdencmp(TREE,SORH,CRIT,PAR,KEEPAPP)5 f' g! P2 s" w' Z' S
函数wpdencmp用于使用小波包变换进行信号的压缩或去噪。
4 n3 ?7 J& H0 |3 ]0 V) o8 }格式(1)返回输入信号X(一维或二维)的去噪或压缩后的信号XD。输出参数TREED是XD的最佳小波包分解树;PERFL2和PERF0是恢复和压缩L2的能量百分比。PERFL2=100*(X的小波包系数范数/X的小波包系数)^2;如果X是一维信号,小波wname是一个正交小波,则PERFL2=100*||XD||^2/||X||^2。SORH的取值为's'或'h',表示的是软阈值或硬阈值。0 r: H/ x& ^3 y* U4 Z5 n
输入参数N是小波包的分解层数,wname是包含小波名的字符串。函数使用由字符串CRIT定义的熵和阈值参数PAR实现最佳分解。如果KEEPAPP=1,则近似信号的小波系数不进行阈值量化;否则,进行阈值量化。
2 o" L; d2 P! D* m$ u+ g" V" N( q格式(2)与格式(1)的输出参数相同,输入选项也相同,只是它从信号的小波包分解树TREE进行去噪或压缩。
0 n/ Z1 I, v, A1 G9 g6 q2 m* V


% H+ f' j1 ]( N0 n. D

该用户从未签到

2#
发表于 2020-7-23 16:15 | 只看该作者
MATLAB中的小波阈值去噪
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-26 09:16 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表