设为首页收藏本站|繁體中文 快速切换版块

 找回密码
 立即加入
搜索
查看: 3781|回复: 5

为什么模极大值法无法检测奇异点

[复制链接]

该用户从未签到

尚未签到

发表于 2009-4-23 08:13:56 | 显示全部楼层 |阅读模式

马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!

您需要 登录 才可以下载或查看,没有账号?立即加入

×
原始图形如下,添加了噪声,使用的是db3小波,做了5层分解。9 I1 u) q* ~( U. c' Z
可是使用模极大值法检测不到第二个波的波头,不知道为什么?
# C5 S' K1 S0 }% ?* e0 t% o请达人指教。( R) ^% F5 c* s  Y9 k$ a
源程序在如下) O+ j% h0 D6 x' h4 I! G/ X7 Q& _
plot(cable(:,1),cable(:,2))
/ D! g$ }  a: l) vtcable=cable(:,1);0 g, t5 d7 k9 \3 K
ycable=cable(:,2);
+ |( x$ m+ O0 f/ Y0 Q5 V9 Klength(ycable)& t2 C- D; R) |- ~# |* z3 x7 }

6 t- h/ ^. c* p0 q0 R( S3 }$ }( {. Zsignal_length=33856;* W  g' v# g1 d; d4 Y$ I
t(1:signal_length,1)=0;. x0 w1 C$ p4 c9 C3 [. y* i
Ncable=length(tcable);  y  b0 d; e5 O
for i=1:Ncable
* Z  z) A( @* j+ s t(i,1)=tcable(i,1);2 Z9 J2 Q/ q2 z2 G; g8 @
end
! c  ?: F6 k0 \4 H & o. G# s6 ^* u! Q) G
y(1:signal_length,1)=0;
& X$ x2 h. n7 z5 R, ^for i=1:Ncable9 |, I' Y. o8 U/ e. O. i
y(i,1)=ycable(i,1);
! j% Y  @& \0 C. [6 T0 [end
3 [* @5 A  M0 S; F  | noise=0.01*rand(1,length(y));
+ j) o+ J1 a* Z! o9 Vy_noise=y+noise';0 _* F# k! W( R8 S# I* e% Y
& i  _. q. t2 G0 q! v
signal=y_noise;
& n0 d3 p; U- C- P%plot(t,signal)* G9 b7 z2 C( g& e
points=length(signal);        level=5;    sr=360;   num_inter=6;   wf='db3';; p2 H9 g$ w( n1 @. g4 H
%所处理数据的长度    分解的级数   抽样率    迭代次数        小波名称
7 W- |. v3 r( coffset=0;; q$ [8 S- w( T8 g3 {! n
& J+ ^% g0 I, W5 _
+ r, ^* S8 P, v% M6 f
%____进行二进制小波变换(离散平稳小波变换),并给出各级波形:+ n/ U: B) ]2 B" J- Y1 {! Y8 P
[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters(wf);%Lo_D:分解低通滤波器
( g& K3 x' ^) Q8 R: V3 a, Z" d                                   %Hi_D:分解高通滤波器2 [6 I4 t4 W. u/ j
                                   %Lo_R:重建低通滤波器
& Y/ \+ r( \8 ]                                   %Hi_R:重建高通滤波器3 a/ w% I# d' ?2 ^' M
                                   * f7 \. _5 J% p" _+ O- r+ a( x. @
[swa,swd] = swt(signal,level,Lo_D,Hi_D);%swa小波概貌  @3 I7 @3 b% ]4 I: h' S
                                        %swd小波系数
' X6 F. b; d% t- N' H" D1 U
- t9 T: w0 j, a( |* L  t% w6 Pfigure;%figure10 p) o8 w" u! D3 _
subplot(level,1,1); plot(real(signal)); grid on;axis tight;0 ~1 k  u( T/ K
for i=1:level( A2 b/ W) I5 O! j8 R
    subplot(level+1,2,2*(i)+1);+ t' ~! Q1 E# Z* n
    plot(swa(i,:)); axis tight;grid on;xlabel('time');
0 o3 |( r: A% \* i' B    ylabel(strcat('a   ',num2str(i)));3 O6 G8 P4 Z. C6 C, I! r! B+ E
    subplot(level+1,2,2*(i)+2);4 _" J0 ^9 R- Z6 i8 M6 a4 J' D$ s
    plot(swd(i,:)); axis tight;grid on;3 U4 `5 Q. G* `) ]) v
ylabel(strcat('d   ',num2str(i)));
0 B' @6 r" j! Pend
& D3 B6 q6 V# h4 d3 t3 @0 v6 ~%以上内容是对信号进行离散小波变换。: _$ J, ?6 \) @, Q) _' l* g
%尺度为5, ?2 Y: S$ l1 z( w5 k
" p2 [) O2 M0 y  c, x

' l9 c1 e9 w6 E% u( e
) y9 M) e# V7 O%____求小波变换的模极大值及其位置,并按级给出小波变换模极大的波形:
: }' U4 g- G% c" M% swa:小波概貌;  swd:小波细节;
2 n; _+ U2 y% j% ddw:局部极大位置; wpeak:小波变换的局部极大序列。! r. r3 T; A' k: [8 Q# e
ddw=zeros(size(swd));%建立与swd维数相同的矩阵,矩阵值都为零
, ?! U' i% x1 M* Ppddw=ddw;
( r- l, P. K8 a' q6 I/ ], D3 @nddw=ddw;: G1 n. W1 g  k- Q
posw=swd.*(swd>0);%.*数组乘法,将swd中小于零的数置零% I  ~! X! a, Y
pdw=((posw(:,1:points-1)-posw(:,2:points))<0);
- s8 v- c# W4 mpddw(:,2:points-1)=((pdw(:,1:points-2)-pdw(:,2:points-1))>0);5 x# O' u/ A: ]& E$ C3 E  U4 Y
negw=swd.*(swd<0);%将swd中大于零的数置零
+ c3 j; y2 b# u9 \ndw=((negw(:,1:points-1)-negw(:,2:points))>0);
$ {" Z' C; d3 F0 e* {nddw(:,2:points-1)=((ndw(:,1:points-2)-ndw(:,2:points-1))>0);
8 M) \% ?+ D! M) ]% z6 ?& Tddw=pddw|nddw;%|:或& a2 F0 c. T; ^: ?
ddw(:,1)=1;( Y5 p1 g; U9 S8 i. l* `
ddw(:,points)=1;- A9 |+ _4 N' U- S/ h# w$ R2 o4 M
wpeak=ddw.*swd;6 n) W# I( t. D7 m
wpeak(:,1)=wpeak(:,1)+1e-10;%第一列的值加上1e-10,不知道出于什么目的,目前看来不会对结果产生影响2 t. l* n' t  W6 i- `' b
wpeak(:,points)=wpeak(:,points)+1e-10;%同理,将最后一列的值加上1e-10,不知道出于什么目的,目前看来同样不会对结果产生影响+ z3 |  }0 I6 Q$ p
%以上内容为:寻找每级尺度上小波变换系数对应的模极大值点) k- _& y% g) i, v- f- W
! u" q' O" `# ~  T8 L  |/ n
wpeak_threshold=wpeak(level,:)/max(abs(wpeak(level,:)));
# o2 T: [  ~2 K+ x  dthreshold=0.1;  %  阈值 2 D, }1 q6 X. T1 x1 I; \

5 Z  u: Q7 g% m1 tfor i=1:points;: f* |% e7 A: A5 w" P1 v* J& X
   if (abs(wpeak_threshold(i))<threshold)
- L9 ^- d, M' @/ }, x7 x! w; r8 v4 S        wpeak(level,i)=0;' x' i; J* ~2 d0 [( l/ n% v8 V
    end
1 |8 z  M, R* Y1 Dend; ; d) E7 g* k5 {( U: H! O9 V
D5_wpeak=wpeak(level,:);1 w- O5 v# H: u% I4 d8 j
! N3 F" w4 l; s: i
%对最大尺度2.^J上的极大值点设定阈值T0,将低于阈值T0的模极大值点去掉,
7 F& q$ i4 G* Q8 g
+ J! g+ S) U5 K- Y' N" q) _5 G/ w. L  O; H' i2 J; \
%____进行模极大值的处理:
% X# [( N0 U2 }" I& I' s. g%%C=0.8;
2 l) P1 D! B2 r+ y- V%此参数需要调节,为了在最大尺度上设定合适阈值,以确定最大尺度上该保留的模极大值点。
* _& C+ P* H% B9 c/ e4 n* ~) y%%D5_wpeak=wpeak(level,:);
9 S& o2 S! q' w7 c%%M=max(abs(D5_wpeak));
; O2 g7 H9 X: X4 Q; f%%Thr=C*M/level; %阈值计算,可参考论文:"3mm波段脉冲雷达系统研究和小波去噪分析"。
& h- w. j5 q7 l1 H%%for i=1:points
) ^* Y5 Q9 D/ R& \( T%%    if(abs(D5_wpeak(i))<Thr): j# l$ Z4 s  E/ _5 M
%%        wpeak(level,i)=0;
0 r+ u/ K  V) E  r%%    end+ E% a5 y/ ?9 t( b( t
%%end0 f/ U( k7 S( b6 z9 t- y4 ]- L
%%D5_wpeak=wpeak(level,:);  ~5 z# t3 ]# D( }
( G, Q# k: m3 p: V
figure;%figure2
2 M- r$ F$ }7 ?subplot(level+1,1,1); plot(real(signal)); grid on;axis tight;' B8 v0 q3 b, M6 A. r) o
for i=1:level
( v1 E: N5 y+ N( T6 O    subplot(level+1,1,i+1);
) u/ z4 _  ^( R    plot(wpeak(i,:)); axis tight;grid on;" M6 c8 j/ e+ r9 s# E' b
ylabel(strcat('j=   ',num2str(i)));
/ z: M, `' b, T, nend
" p8 O; E7 c( \+ I6 Z, r2 y$ E. ~; u9 F0 X8 i- b. f9 D/ f

6 R; I" c" O: M%步骤4
5 V. ?5 U& d, c%模极大值的处理方式:& t+ z' M/ V  _
%在尺度j上极大值点位置,构造一个搜索区域,
! d7 S- D6 E5 I6 [8 V%在尺度j-1中,极大值点落在该区域的点保留,其他的置0;
* o: T7 T/ G! ^5 X6 ^5 eD4_wpeak=wpeak(level-1,:);6 f! g8 o# x2 M+ Z6 U! V( ~7 P2 x$ e
sousu=6;
  A3 ]- N% |: d3 L! O! w$ B  rD5_p=(D5_wpeak~=0);5 |3 {; Y+ y" S
O_d5=sousu;%该参数确定在上一级搜索极大值的范围,可以调整。
! l* J2 p* a& cfor P_d5=O_d5:(length(D5_wpeak)-O_d5);7 g" b) ~$ g* \$ E
    if D5_p(P_d5)==1;
9 \7 j( \) K) ^  \& i1 X        for i=1:O_d5-1;% T$ f0 |( l+ c* i/ c# i  k
        D5_p(P_d5-i)=1;  
4 {6 _: W# d* f/ z1 L        end ;4 ~! e- Q8 J7 }1 ]  T
    end;     
. Z; s. I% b( m  q9 X' [1 Eend;. A$ `0 B* v  Y  G: [% n: @
D4_wpeak=D4_wpeak.*D5_p;
+ n3 u& Z& |* _1 E# S9 T# v
" M, J0 E) }! t- ^: ~3 e0 @9 s# tD3_wpeak=wpeak(level-2,:);
7 }$ l; Q4 t0 a7 L' W) GD4_p=(D4_wpeak~=0);5 H# K$ K; ]: e9 L  m6 n  }. v. x9 ^
O_d4=sousu;%该参数确定在上一级搜索极大值的范围,可以调整。7 B" i% ], R0 s& }( G
for P_d4=O_d4:(length(D4_wpeak)-O_d4);  Q! t* d8 t" o$ S# F  T; R- U
    if D4_p(P_d4)==1; % V' G) {6 [$ X- U0 b' ^. `
        for i=1:O_d4-1;
6 u9 q9 L+ U3 V        D4_p(P_d4-i)=1;  
, l' V% y0 j. `        end ;
" x- C6 k' j# W- A4 Z: w    end;     ) s$ {3 Y9 x7 @: L- E/ ~
end;: O! k7 W  a  O; `' ?6 H
D3_wpeak=D3_wpeak.*D4_p;
3 X& O% }% u" R6 M
+ [* e+ z5 n% n8 w! ZD2_wpeak=wpeak(level-3,:);
- |+ t: A) L7 u+ n3 rD3_p=(D3_wpeak~=0);
2 ~& r) l  `/ GO_d3=sousu;%该参数确定在上一级搜索极大值的范围,可以调整。
) y& n3 N# R* E7 Mfor P_d3=O_d3:(length(D3_wpeak)-O_d3);! Y$ B9 a9 r( M) W3 s/ O2 l
    if D3_p(P_d3)==1;
/ F$ E+ E1 {, X4 U* b! g0 G# u        for i=1:O_d3-1;
0 U/ g- X+ G2 @# ~  T$ v        D3_p(P_d3-i)=1;! I+ E" p; Q2 [/ K, s
        end ;
8 a; e3 J( s+ i8 T. H    end;     
9 ^4 }) F6 }) X2 kend;0 Q# S$ _2 S5 f. }6 r4 N, t2 ~
D2_wpeak=D2_wpeak.*D3_p;* I0 c4 V! ?% N9 {( T( P% K

6 T* e4 W: H0 h1 ^%第一层单独处理,在第二层极大值点位置上,保留第一层相应极大值点:
( x. V: Z; ?$ F# }$ m  qD1_wpeak=wpeak(level-4,:);1 Y0 |2 X; E. m
D2_p=(D2_wpeak~=0);
$ A7 v- J7 t, J( h1 f1 E( CD1_wpeak=D1_wpeak.*D2_p;6 O6 q2 r+ E6 }/ Q

1 c7 O$ h/ V: X; I2 Wwpeak=[D1_wpeak' D2_wpeak' D3_wpeak' D4_wpeak' D5_wpeak'];4 W* h! }9 A- @& M7 u* I
wpeak=wpeak';  n/ [0 r. D3 z3 n* E; i3 t
! J2 H4 K! @; t3 l
%____重构信号:
0 `0 s; N' T3 f  l- }pswa=swa(level,:); % pswa: 为待重建的信号
3 ~# l1 D: w: p" ?3 Iwframe=(wpeak~=0); %迭代初始化
, W2 r/ m* r: X* C) ]2 ow0=zeros(1,points);
- a' [! ~6 H  b[a,d]=swt(w0,level,Lo_D,Hi_D);
# a$ b. p6 {4 _( Ww2=d;  % w2为待重建小波* m% Z1 q& s+ e# X  B
    for j=1:num_inter- u! }- F" |3 {0 r0 v2 P
       w2=Py_Pgama(d,wpeak,wframe,1,sr);   % 先进行Py投影和 Pgama投影
, w6 a+ ^( v. b9 g, a, s       w0=iswt(pswa,w2,Lo_R,Hi_R);         % 再进行Pv投影
: \% Q1 t0 E" Y  b: c/ Z3 I, D       [a,d]=swt(w0,level,Lo_D,Hi_D);      % Pv
, k# S2 @# B1 a' P4 B2 Y8 w    end
# k- w8 X8 P- d     pswa=iswt(swa(level,:),w2,Lo_R,Hi_R); % 计算重建信号   
3 [6 P8 B" k6 v' `8 [0 o5 O     . l/ F8 Q* g: ?/ |+ j) R9 |) x
xcrr=y'-pswa; % 重建误差1 E' \' o- x2 m, H
figure;%figure3
+ L( k1 B, q, q" ^2 j5 O7 Usubplot(411)4 |# d% p; e$ `2 ?; Z( W& g
plot(y(1:points),'r');
+ A  R, ~( @5 e' @0 `- B; y1 Naxis tight;
$ n' K( d) j' U! C! s& Wsubplot(412)2 L+ j: m! @9 g& t* ]
plot(signal(1:points),'r');. D! Z4 J; M" \8 R  `
axis tight;8 W7 V' p4 V- e2 }! y" D1 U
subplot(413)' _0 g. u; I: U& t! ~: d
plot(pswa(1:points)); 5 Z, F, B' x6 g' S' {
axis tight;
. c7 k. R) i  H! L! e, F. i2 ?subplot(414)) j$ P! ?& \8 o* S) }1 L+ F
plot(xcrr(1:points)); 4 U- K; C7 i3 K0 i4 M
axis tight;3 Z: s3 u+ E% D; H, c. B6 @
figure%figure4* C0 q& j* l# t8 G' [
subplot(611)6 |7 `5 G2 {  c6 B0 N
plot(signal);
: A7 c/ E( c+ Dsubplot(612)
! x2 a" f1 c$ n- I" q: y7 A# f6 \plot(D5_wpeak);) |/ r, W9 _1 N$ E' Q( H
subplot(613)1 R& p- Y4 W1 W* _3 }. `  F4 {
plot(D4_wpeak);
6 q1 ?, X, a+ ~; _( f8 _subplot(614)
9 M+ H6 m* U* Pplot(D3_wpeak);# i9 R% A5 S- t' O+ s/ m
subplot(615)
* Y1 _) j  b7 o0 H. `2 i* Aplot(D2_wpeak);/ r0 Q$ |8 H/ _
subplot(616)8 j& Q4 n" ~; p+ W' ?
plot(D1_wpeak);2 H4 `1 M' w8 Z
[value,index]=max(abs(D2_wpeak))
& z3 l7 n1 s8 L+ `/ @[value,index]=max(abs(D1_wpeak))
更多图片 小图 大图
组图打开中,请稍候......
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • TA的每日心情
    郁闷
    2017-6-11 22:50
  • 签到天数: 4 天

    连续签到: 2 天

    [LV.2]偶尔看看I

    累计签到:5 天
    连续签到:1 天
    发表于 2009-5-12 14:43:18 | 显示全部楼层
    先用MATLAB自带的小波工具箱选择不同小波函数试试效果,你这个分解没有产生奇异点啊
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 2010-3-31 20:39:44 | 显示全部楼层
    可以找到突变点吗?我想了解了解,能不能说一下啊
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 2010-4-21 10:15:30 | 显示全部楼层
    回复 3# 阳光zzl
    ( q1 {& j* A+ ~+ o- t
    8 i* k7 M, A  M/ U  G4 l
    , d! u8 W4 Y6 c% X2 j    我也来请教~·
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 2010-7-21 11:47:20 | 显示全部楼层
    我也对模极大值感兴趣
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 2010-8-8 19:00:47 | 显示全部楼层
    对小波的模极大值,也需要学习的~有些不明白~
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
    您需要登录后才可以回帖 登录 | 立即加入

    本版积分规则

    招聘斑竹

    小黑屋|手机版|APP下载(beta)|Archiver|电力研学网 ( 赣ICP备12000811号-1|赣公网安备36040302000210号 )|网站地图

    GMT+8, 2026-10-9 11:54

    Powered by Discuz! X3.5 Licensed

    © 2001-2026 Discuz! Team.

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