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

看看大神在MATLAB中是怎样实现信号的阈值去噪

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-11-13 10:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
本帖最后由 pulbieup 于 2019-11-13 10:13 编辑
5 F9 x4 m: f. \; \
2 p" L" S* T  D. z. [! i  \: ~# ?MATLAB中实现了信号的阈值去噪,主要包括阈值去噪和阈值获取两方面。
$ D4 G  N: R; k9 x) m* B; l9 J- t5 m- H$ n4 v4 l

2 g8 {$ P0 {* w0 M2 `( C1.阈值获取+ E4 @$ e2 x( x- ~9 T

! c. d& }* B1 D/ o4 s5 ]MATLAB中实现阈值获取的函数有ddencmp、thselect、wbmpen和wwdcbm,下面对它们的用法进行简单的说明。
1 C+ ^' J3 Z$ ?& ]( `$ {
" R2 `' [+ A6 ~2 {- M9 I0 q: ^
ddencmp的调用格式有以下三种:
! b7 J: z3 j0 l" B(1)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,IN2,X) " l! k! f; }+ z' K( Q
(2)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,’wp’,X)
6 ~  T1 s+ G) F+ K4 L(3)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,’wv’,X); c) r( t# @  d6 r

: H+ N# G& x! J7 y! P0 E函数ddencmp用于获取信号在消噪或压缩过程中的默认阈值。输入参数X为一维或二维信号;IN1取值为’den’或’cmp’,’den’表示进行去噪,’cmp’表示进行压缩;IN2取值为’wv’或’wp’,wv表示选择小波,wp表示选择小波包。返回值THR是返回的阈值;SORH是软阈值或硬阈值选择参数;KEEPAPP表示保存低频信号;CRIT是熵名(只在选择小波包时使用)。
8 m( g+ H% p4 q. ]) m; h8 ]函数thselect的调用格式如下: / z+ C  H7 ]" v- w
THR=thselect(X,TPTR);
! r3 m- L  U; g5 G) fTHR=thselect(X,TPTR)根据字符串TPTR定义的阈值选择规则来选择信号X的自适应阈值。# |6 A9 ]7 |! l( w# b
  ?; S$ A4 N) z& H$ y' L2 Z, |
自适应阈值的选择规则包括以下四种: 8 C0 K/ _, w/ ?
TPTR=’rigrsure’,自适应阈值选择使用Stein的无偏风险估计原理。 7 b4 H1 [( D, E  u7 P
TPTR=’heursure’,使用启发式阈值选择。 1 k! Y( F! y; @8 a* R# P) [& m/ a
TPTR=’sqtwolog’,阈值等于sqrt(2*log(length(X))).
3 u) I* {' Y+ v. Y" W( p' ATPTR=’minimaxi’,用极大极小原理选择阈值。 ( L5 v$ [2 n: `1 d& Q  Y' w
阈值选择规则基于模型 y = f(t) + e,e是高斯白噪声N(0,1)。9 U0 p' J5 Y: I5 W* X! f+ h
+ x7 @- S5 L  L6 C  Z. Z
函数wbmpen的调用格式如下:
! R/ X) R; H+ N+ [, v; yTHR=wbmpen(C,L,SIGMA,ALPHA); # F; O1 _3 t; e" A
THR=wbmpen(C,L,SIGMA,ALPHA)返回去噪的全局阈值THR。THR通过给定的一种小波系数选择规则计算得到,小波系数选择规则使用Birge-Massart的处罚算法。{C,L]是进行去噪的信号或图像的小波分解结构;SIGMA是零均值的高斯白噪声的标准偏差;ALPHA是用于处罚的调整参数,它必须是一个大于1的实数,一般取ALPHA=2。
/ _3 h: `# z) B; h1 {# I
( U2 u6 V. |9 s3 W& H- X" Z设t*使crit(t)=-sum(c(k)^2,k<=t) + 2 * SIGMA^2 * t*(ALPHA+log(n/t))的最小值,其中c(k)是按绝对值从大到小排列的小波包系数,n是系数的个数,则THR=|c(t*)|。
  V) P& v" B- ^$ [* o3 X) Nwbmpen(C,L,SIGMA,ALPHA,ARG)计算阈值并画出三条曲线。
. @; T6 i: m* b0 b# S. Y% {& x
2 _$ X; z% Q! T$ ^2 * SIGMA^2 * t*(ALPHA+log(n/t))
2 D6 J. n: h% T2 osum(c(k)^2, k<=t)
0 D" y, Q% g' i: |) h- C" mcrit(t) ' @4 W* N* _" p2 s0 m/ Y
wdcbm的调用格式有以下两种:
5 l% V1 \4 q4 G(1)[THR,NKEEP]=wdcbm(C,L,ALPHA);
' l% I; H' s. P(2)[THR,NKEEP]=wdcbm(C,L,ALPHA,M); 9 |4 m; Y. c, b( q
函数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.
1 x" _, L0 ~& v# m' H* M( {, c
# n5 x/ C6 t; {$ E+ B* m, C0 v  o8 e+ @- T
2.信号的阈值去噪 9 N: T# T9 v- e5 u$ B9 O" l- E
- W- V5 r8 b+ V1 E4 t5 ^6 U1 B
MATLAB中实现信号的阈值去噪的函数有wden、wdencmp、wthresh、wthcoef、wpthcoef以及wpdencmp。下面对它们的用法作简单的介绍。2 Q) R: G$ Z4 ~6 u" w* f' j
6 A2 {8 n9 U7 K. E3 a+ Y
函数wden的调用格式有以下两种: 3 I: o2 {1 `; a$ Q8 ~
(1)[XD,CXD,LXD]=wden(X,TPTR,SORH,SCAL,N,’wname’)
) B- [# I) T$ C" q0 u(2)[XD,CXD,LXD]=wden(C,L,TPTR,SORH,SCAL,N,’wname’)# N& M- }( w0 Z* z
4 h/ z: ^9 @5 i8 w1 n0 E
函数wden用于一维信号的自动消噪。X为原始信号,[C,L]为信号的小波分解,N为小波分解的层数。 : ~& u7 y5 j! M2 r' T
THR为阈值选择规则: % s4 ?  a5 ^4 G  B4 B
*TPTR=’rigrsure’,自适应阈值选择使用Stein的无偏风险估计原理。 - d! n# v' x0 y& w% x2 ^) d/ F
*TPTR=’heursure’,使用启发式阈值选择。 4 C1 j& T8 \$ q' q
*TPTR=’sqtwolog’,阈值等于sqrt(2*log(length(X))). ) ~# ~+ A3 e1 s; F- U
*TPTR=’minimaxi’,用极大极小原理选择阈值。 * W* b8 ]) _( c) ]+ @/ D
SORH是软阈值或硬阈值的选择(分别对应’s’和’h’)。
* J3 `7 p( G# d: f3 {: aSCAL指所使用的阈值是否需要重新调整,包含下面三种:
( J5 S" v4 u- B4 m3 b2 K7 t. X*SCAL=’one’ 不调整;
( [( v$ }  I% ^1 N5 B*SCAL=’sln’ 根据第一层的系数进行噪声层的估计来调整阈值。 " q- a/ o! D) {
*SCAL=’mln’ 根据不同的噪声估计来调整阈值。
: B4 }  ]1 M+ T! uXD为消噪后的信号,[CXD,LXD]为消噪后信号的小波分解结构。! {$ M% w& |, X% r
5 b+ ^0 m7 t5 A: s" O: t; A) c6 |% H
格式(1)返回对信号X经过N层分解后的小波系数进行阈值处理后的消噪信号XD和信号XD的小波分解结构[CXD,LXD]。格式(2)返回参数与格式(1)相同,但其结构是由直接对信号的小波分解结构[C,L]进行阈值处理得到的。
$ @" U- I4 Z/ F3 Z+ w1 E) ]; r, c" u3 C1 a; y( [
函数wdencmp的调用格式有以下三种: ! f! P# u5 z7 a4 q# _! c; t, b
(1)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp(‘gbl’,X,’wname’,N,THTR,SORH,KEEPAPP);
/ C7 k/ Q/ k: R& L, Z8 P8 R(2)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp(‘lvd’,X,’wname’,N,THTR,SORH); 0 M- Y% J; j/ f- Y) K9 E5 h
(3)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp(‘lvd’,C,L,’wname’,N,THTR,SORH);
5 c1 W! M! J6 Z
  |4 m: M% r  Q# ~9 t# Q: m
函数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。% ]9 R2 q$ u* J% l+ i6 f
. T$ u. W% [6 @
函数wthresh的调用格式如下: ( i' {# K% O) ?! w
Y=wthresh(X,SORH,T) 4 p; x: S8 y/ d! |
Y=wthresh(X,SORH,T) 返回输入向量或矩阵X经过软阈值(如果SORH=’s’)或硬阈值(如果SORH=’h’)处理后的信号。T是阈值。
# e* Q0 D8 N3 Z( \2 |; |Y=wthresh(X,’s’,T)返回的是Y=SIG(X)*(|X|-T)+,即把信号的绝对值与阈值进行比较,小于或等于阈值的点变为零,大于阈值的点为该点值与阈值的差值。 ) Y( k3 M$ {) m
Y=wthresh(X,’h’,T)返回的是Y=X*1(|X|>T),即把信号的绝对值和阈值进行比较,小于或等于阈值的点变为零,大于阈值的点保持不变。一般来说,用硬阈值处理后的信号比用软阈值处理后的信号更粗糙。' E3 ^3 N6 Y. i) F0 d( z9 T* X

6 F( ?: D  E. z. u* w9 l8 D函数wthcoef的调用格式下面四种: / G2 ~: t: I8 I/ z) Y: g
(1)NC=wthcoef(‘d’,C,L,N,P) 0 t3 f2 F$ N+ Q: j1 q$ j0 G
(2)NC=wthcoef(‘d’,C,L,N)
8 g3 M9 B2 T% m7 ?/ D( b(3)NC=wthcoef(‘a’,C,L) 5 a% [3 u1 G; ^" m+ y* d4 k
(4)NC=wthcoef(‘t’,C,L,N,T,SORH) 3 i8 G% Y$ ^8 |$ g6 M0 U
函数wthcoef用于一维信号小波系数的阈值处理。6 {* C0 Z) f4 G
% R, R) g3 J' Y* f& Q- `
格式(1)返回小波分解结构[C,L]经向量N和P定义的压缩率处理后的新的小波分解向量NC,[NC,L]构成一个新的小波分解结构。N包含被压缩的细节向量,P是把较小系数置0的百分比信息的向量。N和P的长度必须相同,向量N必须满足1<=N(i)<=length(L)-2。
! e& V, A5 K2 G格式(2)返回小波分解结构[C,L]经过向量N中指定的细节系数置0后的小波分解向量NC。
. }. }3 \" y/ J1 X# I格式(3)返回小波分解结构[C,L]经过近似系数置0后的小波分解向量NC。
3 u0 \9 p4 y( x) W格式(4)返回小波分解结构[C,L]经过将向量N作阈值处理后的小波分解向量NC。如果SORH=’s‘,则为软阈值;如果SORH=’h’则为硬阈值。N包含细节的尺度向量,T是N相对应的阈值向量。N和T的长度必须相等。5 J$ Y$ k3 j& p! J8 k7 ?- l

* n- M5 |' _: }) G0 K1 u0 |0 F函数wpdencmp的调用格式有以下两种: - I7 c) [" F9 e0 h/ A' Y' \
(1)[XD,TREED,PERF0,PERFL2]=wpdencmp(X,SORH,N,’wname’,CRIT,PAR,KEEPAPP) % y' E% D; U5 x# `+ O+ e  _+ d: e
(2)[XD,TREED,PERF0,PERFL2]=wpdencmp(TREE,SORH,CRIT,PAR,KEEPAPP) : ]% U' n3 P9 _
函数wpdencmp用于使用小波包变换进行信号的压缩或去噪。- u! F1 [1 a; Y
+ I1 ]$ D- P/ {6 l9 z
格式(1)返回输入信号X(一维或二维)的去噪或压缩后的信号XD。输出参数TREED是XD的最佳小波包分解树;PERFL2和PERF0是恢复和压缩L2的能量百分比。PERFL2=100*(X的小波包系数范数/X的小波包系数)^2;如果X是一维信号,小波wname是一个正交小波,则PERFL2=100*||XD||^2/||X||^2。SORH的取值为’s’或’h’,表示的是软阈值或硬阈值。( S0 U( }1 {) J9 k' G, H

( L' I1 o% K# B6 K+ s输入参数N是小波包的分解层数,wname是包含小波名的字符串。函数使用由字符串CRIT定义的熵和阈值参数PAR实现最佳分解。如果KEEPAPP=1,则近似信号的小波系数不进行阈值量化;否则,进行阈值量化。 * {2 P, x: O3 P* f' O; [  X9 J! M4 u& K
格式(2)与格式(1)的输出参数相同,输入选项也相同,只是它从信号的小波包分解树TREE进行去噪或压缩。
; W$ S+ ^) U% q4 ?7 E
* c# [8 S# N* _) L) B5 ]5 j

9 G4 y. ?: V0 \6 u/ I$ D5 |. H, v9 d5 [$ _- L0 y- v3 i
  x4 J& O1 N7 h, u- \9 y
9 ^; `. ~' S) Y. r# L4 ^: R4 i
7 E. e2 E  I, _
+ C  D6 y. U0 `; ^# n! N1 a
  z+ ?; |( s$ n4 Q  B

9 a, ?( H5 v3 q! W

* w3 P! `+ J  \# w& Z* P+ M! m) ]5 F
4 e; e9 P$ C7 ~

' r! X! c( F) S0 F  e% Y, X. r' u& U  E! A  b& W6 P; E4 C' W+ o
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 20:30 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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