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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
原始图形如下,添加了噪声,使用的是db3小波,做了5层分解。
$ ]. @+ U- q0 L9 C+ G可是使用模极大值法检测不到第二个波的波头,不知道为什么?
( u$ I( u* R& n9 K; t& n3 s/ a请达人指教。8 k3 |2 ~) s# n& m) A
源程序在如下
" G  M# g8 Y0 nplot(cable(:,1),cable(:,2))( C& l6 d- ]1 b2 n) h
tcable=cable(:,1);
: l, `! P( g0 U# ~* g4 n2 ]ycable=cable(:,2);7 B# B) c1 C& G& b  a
length(ycable)
: T& P/ t7 t8 D  d; g8 _
2 f) b/ ^+ a- Y. S& rsignal_length=33856;
- c: a- O% `& d% W/ x" o6 P% z t(1:signal_length,1)=0;
# F" o8 X6 i. c: y5 J$ w Ncable=length(tcable);+ f$ O2 D) {; x. a
for i=1:Ncable6 W: }+ S$ U" r, l, {' _
t(i,1)=tcable(i,1);
( j9 D. X. z5 o; }+ W end
( x7 g: O. Q3 Z1 ]# P) h) Z& o
0 z1 ~. y. S; y' ?1 B  V! ey(1:signal_length,1)=0;
5 C. ]7 z( ^1 {/ Efor i=1:Ncable8 T3 |% m& @  e" p7 }
y(i,1)=ycable(i,1);
: @. h9 z8 I& R9 Q3 zend( x% e' z1 p8 a
noise=0.01*rand(1,length(y));
8 \( w" C8 V. v3 [+ G" x5 }y_noise=y+noise';
- p6 s% Q. C6 G$ R* z& Y8 r  u- _3 X4 B5 d! H& g
signal=y_noise;
0 ?  A& R6 [9 q. V9 I% {%plot(t,signal)
1 ]% V: O4 E5 s% Qpoints=length(signal);        level=5;    sr=360;   num_inter=6;   wf='db3';
: m7 n+ W0 K' n3 N, v- f* W; K7 K%所处理数据的长度    分解的级数   抽样率    迭代次数        小波名称
5 @% L1 S" M/ Loffset=0;* ~. z5 V5 Y  D4 [2 C. X* t

2 Z3 n/ {" E. y+ s$ u
# B- u- R) T5 T; _: F%____进行二进制小波变换(离散平稳小波变换),并给出各级波形:
: L  a, q9 Y3 \' k. O[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters(wf);%Lo_D:分解低通滤波器
" x5 ^: E, |  [( c$ e0 z                                   %Hi_D:分解高通滤波器
: w* t% X0 r, V4 d                                   %Lo_R:重建低通滤波器
- A, H6 ]0 h6 B& x( n8 H  p: l                                   %Hi_R:重建高通滤波器
5 d8 a  m. a( [' K& }                                   
$ k7 d* {  ?; Y6 a% q7 g[swa,swd] = swt(signal,level,Lo_D,Hi_D);%swa小波概貌7 W. n, P" |$ x% c7 L9 o
                                        %swd小波系数
/ `& p% V# B, Y% d! \! C ; S" M0 k* l! I; p  _' b
figure;%figure12 k& B* Y& l: o6 e5 e& q
subplot(level,1,1); plot(real(signal)); grid on;axis tight;
) x1 F3 O( Y/ O8 v7 N+ Nfor i=1:level
- Q) X9 y% m% a5 M. W- b    subplot(level+1,2,2*(i)+1);
" `2 k6 k# Y+ X; A% z$ Y    plot(swa(i,:)); axis tight;grid on;xlabel('time');2 Q4 e% ]2 r0 v. K" h8 A* j* ^
    ylabel(strcat('a   ',num2str(i)));
# \& C% z" ~6 u# H# c    subplot(level+1,2,2*(i)+2);6 \& L- u* H- D. k
    plot(swd(i,:)); axis tight;grid on;& S$ _- p4 ?' o4 d+ T. B9 A
ylabel(strcat('d   ',num2str(i)));
5 T$ f! D; n7 K5 n8 Yend* {2 d# r* y$ \: E) A! e; `" d& A
%以上内容是对信号进行离散小波变换。
5 K" f4 i$ p3 [& g1 k" @%尺度为53 O$ s) [" E1 d
% A( ^8 ]4 g2 }

% Z, F  D( I" o5 K2 [, q0 l5 C+ i( k
%____求小波变换的模极大值及其位置,并按级给出小波变换模极大的波形:
  f% i8 a# B' ]& X5 Z% swa:小波概貌;  swd:小波细节;
) C  Z; B0 p, R, u/ q) n/ U% ddw:局部极大位置; wpeak:小波变换的局部极大序列。( z6 k4 I9 z5 ~- P1 P% R
ddw=zeros(size(swd));%建立与swd维数相同的矩阵,矩阵值都为零
) r- J0 R  `0 ]/ h0 @pddw=ddw;
% r; j  Q" O. G7 M) xnddw=ddw;5 f/ Z) D2 r+ f/ S$ ~( p* X# D
posw=swd.*(swd>0);%.*数组乘法,将swd中小于零的数置零" r' }/ K3 s0 Y! T4 W7 K7 c& J
pdw=((posw(:,1:points-1)-posw(:,2:points))<0);
/ ?) ~" L* L- `) Z. P2 ^- j2 d8 bpddw(:,2:points-1)=((pdw(:,1:points-2)-pdw(:,2:points-1))>0);& d. A4 j" J5 q
negw=swd.*(swd<0);%将swd中大于零的数置零, F3 Z2 }0 m' D0 {2 y! T/ u
ndw=((negw(:,1:points-1)-negw(:,2:points))>0);
: j# X6 t0 d. i9 {$ x# mnddw(:,2:points-1)=((ndw(:,1:points-2)-ndw(:,2:points-1))>0);0 Y( Z; F8 A- E& @' Q8 K
ddw=pddw|nddw;%|:或. H" w& `  H8 ]  l  O( N5 l
ddw(:,1)=1;
* F8 i8 c* Y2 t) k( n. Mddw(:,points)=1;) m7 _# v6 V0 P2 D  ?* x. j+ e
wpeak=ddw.*swd;
) H0 K( H7 n3 ?2 l! d( U2 X2 V0 fwpeak(:,1)=wpeak(:,1)+1e-10;%第一列的值加上1e-10,不知道出于什么目的,目前看来不会对结果产生影响0 K" X) r6 D, k
wpeak(:,points)=wpeak(:,points)+1e-10;%同理,将最后一列的值加上1e-10,不知道出于什么目的,目前看来同样不会对结果产生影响
. C! w* n4 l/ F: }%以上内容为:寻找每级尺度上小波变换系数对应的模极大值点
, o- ?5 ~. ]+ ]* O$ o0 h$ d+ O- |* L0 o$ a$ Z/ o: r0 w
wpeak_threshold=wpeak(level,:)/max(abs(wpeak(level,:)));
! H' w7 L+ i9 j% Lthreshold=0.1;  %  阈值
9 M  m# C" l8 t
9 ~0 s  D  C. {. o, h( Gfor i=1:points;% I2 @6 W; B4 L* c4 E! b$ h
   if (abs(wpeak_threshold(i))<threshold)+ H& r8 C# _  D+ W1 N
        wpeak(level,i)=0;
( D6 z3 u# R" ?$ `: s% D; o    end( Q* y) J0 n7 Y
end; # m* m3 {) K$ s0 b
D5_wpeak=wpeak(level,:);
( @( A. ^. e* s- q
" l3 Y% I, B2 G- v7 T3 x%对最大尺度2.^J上的极大值点设定阈值T0,将低于阈值T0的模极大值点去掉,
; m# i' c4 Q( e# r$ K. R# a4 [/ }
0 f7 S$ d( l8 q; C5 f1 T/ }" C( I: s5 ?0 q4 ~% \
%____进行模极大值的处理:
) R, R( M  [8 u% L7 a%%C=0.8;
0 U. c: z2 K; h. r7 V: O* B%此参数需要调节,为了在最大尺度上设定合适阈值,以确定最大尺度上该保留的模极大值点。3 p, u' _7 H* a* c; t* V
%%D5_wpeak=wpeak(level,:);1 g+ X$ v9 h5 c% U
%%M=max(abs(D5_wpeak));& k4 e5 C+ ~7 l
%%Thr=C*M/level; %阈值计算,可参考论文:"3mm波段脉冲雷达系统研究和小波去噪分析"。
% @  d! e$ q0 F%%for i=1:points/ a$ A2 O7 G5 |- A1 ~
%%    if(abs(D5_wpeak(i))<Thr)
8 J5 a! d, `. U$ F+ q* z& [3 Q/ t- R  f%%        wpeak(level,i)=0;/ m" H. F! l, O+ }3 G
%%    end
6 q; L+ q0 c: i4 c- Z3 c%%end
% }! X8 Y( S( e$ V% U6 Y1 u%%D5_wpeak=wpeak(level,:);
1 f8 {2 S/ V7 ~( w* _- U- `& ]+ f3 u, }3 {; h% _, M
figure;%figure2  L5 }- D" _. {8 M- E- w
subplot(level+1,1,1); plot(real(signal)); grid on;axis tight;
; Z* \$ Y# ]& g. V4 j% R. Ifor i=1:level
6 {' {; i- l# s% `    subplot(level+1,1,i+1);
6 |3 N# U& Z8 y# i+ O+ T2 ]    plot(wpeak(i,:)); axis tight;grid on;6 @- J5 M1 Z- Y! e: }0 d* n7 Z
ylabel(strcat('j=   ',num2str(i)));( b2 x/ q. P: w0 O  f
end
: W% @7 L$ l& Y" |6 B$ \) z" b! s  D/ E% S0 g4 [

: {5 N0 b/ X* d; b%步骤4
) q6 [9 Z1 _$ T, m/ D%模极大值的处理方式:3 p! ^8 g6 r6 ~
%在尺度j上极大值点位置,构造一个搜索区域,
( o' a5 Q9 m3 p9 a# d5 H% g: z( m7 y%在尺度j-1中,极大值点落在该区域的点保留,其他的置0;( O; N$ Q. h* E, R3 w9 Y1 ^
D4_wpeak=wpeak(level-1,:);
- N+ |0 `! o+ ssousu=6;
2 J' O+ K9 [3 ]D5_p=(D5_wpeak~=0);
; F& E, U% A1 R: ]2 {8 I- aO_d5=sousu;%该参数确定在上一级搜索极大值的范围,可以调整。& T' t" o8 N1 ]& ^4 h
for P_d5=O_d5:(length(D5_wpeak)-O_d5);/ K. |$ V8 B7 r) e8 |2 K
    if D5_p(P_d5)==1; 3 Z5 L; z) O0 u" g1 K- E; [# Y/ Z
        for i=1:O_d5-1;
7 e% }  k9 I% L6 l% R: o5 E) C7 t: G        D5_p(P_d5-i)=1;    r2 g# i/ J' Q2 @4 k9 M$ C
        end ;  i" {; {8 {3 J6 x5 }
    end;     
1 w% m5 ^. A5 m, Fend;
$ f; p& {4 e* }% ND4_wpeak=D4_wpeak.*D5_p;0 o) y2 w* t, F0 y  f
4 ?+ x* j8 G# z1 n( \  w9 C$ y- `6 m
D3_wpeak=wpeak(level-2,:);! b: n' O, q% i# S* [+ q; c8 r
D4_p=(D4_wpeak~=0);- E# ~: q6 G# |
O_d4=sousu;%该参数确定在上一级搜索极大值的范围,可以调整。
2 ]4 y+ _2 F! Efor P_d4=O_d4:(length(D4_wpeak)-O_d4);* u$ L- J' X  {2 q: w
    if D4_p(P_d4)==1;
, a' p5 Z3 s; {6 h# F        for i=1:O_d4-1;7 G5 a3 i5 ?5 q: c
        D4_p(P_d4-i)=1;  ' ]: E8 B# ]3 j
        end ;
# k, b4 |8 ]9 S1 v! k    end;     1 o; y: w$ O$ J% U4 J0 ?
end;1 z3 n; v; `1 v! g
D3_wpeak=D3_wpeak.*D4_p;
" T. `' Z* W* F- ~* N! Q+ s' H+ h. f' y- y
D2_wpeak=wpeak(level-3,:);
) ]4 W: |2 V- ^7 C: BD3_p=(D3_wpeak~=0);
4 y  @3 b+ s+ Q5 EO_d3=sousu;%该参数确定在上一级搜索极大值的范围,可以调整。! Q) {, d& n& u
for P_d3=O_d3:(length(D3_wpeak)-O_d3);  r( x2 ?* Z3 ?2 A* K
    if D3_p(P_d3)==1;
; q# Q) b0 U! [' F7 d# p4 @        for i=1:O_d3-1;$ _$ _, \3 _( \7 F
        D3_p(P_d3-i)=1;
- [7 O6 O! M* d: ?* N: L0 z        end ;; G. @! v% _/ o5 `4 g9 ~7 m  u% z
    end;     
4 l4 T$ U9 L$ S6 F9 Rend;
2 l$ ]7 o' F- i! \D2_wpeak=D2_wpeak.*D3_p;8 _5 I; \; Y) m8 b6 Z7 F1 r

6 \5 c% C/ g9 ]7 o  z%第一层单独处理,在第二层极大值点位置上,保留第一层相应极大值点:7 ?5 i: k7 b4 z: x6 B& |
D1_wpeak=wpeak(level-4,:);/ g% M. R$ S7 Y0 [
D2_p=(D2_wpeak~=0);
3 H4 b7 `5 {$ xD1_wpeak=D1_wpeak.*D2_p;, f5 _; R  b1 R, S

5 W: r' A. w. E* Y% H, ewpeak=[D1_wpeak' D2_wpeak' D3_wpeak' D4_wpeak' D5_wpeak'];
& O' _& t2 P- ~wpeak=wpeak';; N# f. z+ u$ e2 S0 J

# A$ U( y" ~5 m- I%____重构信号:, _  l, s, q5 t  m
pswa=swa(level,:); % pswa: 为待重建的信号- g1 ~4 C; W9 r6 ^+ B7 ~5 R( a, A
wframe=(wpeak~=0); %迭代初始化# R+ m, L2 c* T) G' ^
w0=zeros(1,points);
8 B! E$ o- G5 Q+ S* @[a,d]=swt(w0,level,Lo_D,Hi_D);* r. ]7 F8 \; Q( J0 W3 ]
w2=d;  % w2为待重建小波
/ x6 }: C, D. V* Q1 G" ^    for j=1:num_inter3 C8 E2 f, w: C- Y" N8 }  J+ ]* |) K9 L: t
       w2=Py_Pgama(d,wpeak,wframe,1,sr);   % 先进行Py投影和 Pgama投影/ e/ ~5 B& ]$ K0 w+ E
       w0=iswt(pswa,w2,Lo_R,Hi_R);         % 再进行Pv投影
! v& f& ?8 L9 S+ D8 b& W2 M       [a,d]=swt(w0,level,Lo_D,Hi_D);      % Pv
4 `+ j7 t& {/ {. I5 a    end
5 D' d  t" v: K! \% L     pswa=iswt(swa(level,:),w2,Lo_R,Hi_R); % 计算重建信号   ( x5 p% W/ ?4 y  x2 b. J+ D
     7 z. e+ P6 _: z& h: X* I% x/ q% W
xcrr=y'-pswa; % 重建误差
) g" J% d6 _- D, wfigure;%figure3, J3 V7 z. u; O) c- G6 H
subplot(411)
: e+ Y3 |0 D$ n+ _3 x3 m* xplot(y(1:points),'r');! U% x: T. V/ |& [  q; {- |4 v2 o
axis tight;. L, K- x" z0 g4 E6 M
subplot(412)8 K: g  k  e" F4 V
plot(signal(1:points),'r');, q8 P" r6 L, @6 x) w1 l( P# w
axis tight;* }- _" z9 ~) n( |# ?) z4 ^
subplot(413)! s+ V9 M5 g) p3 E
plot(pswa(1:points)); 2 U" O1 t. O! P: B
axis tight;$ u/ s6 g, m( M! J/ b% K$ \
subplot(414)% g& I) X6 _) T8 u: O/ {
plot(xcrr(1:points));
! F) v) g+ n* a  Jaxis tight;
+ R5 P4 k: u, F: t+ G! y9 A; _figure%figure4
2 ~1 x! V1 A5 }8 H- }subplot(611)) D: I8 b) S6 {9 \
plot(signal);( s% P# c* _4 I
subplot(612)* N) Z0 i' _2 Z. O
plot(D5_wpeak);
6 n4 s8 Y" z' Y* rsubplot(613)
3 E; x" B. {* _/ Eplot(D4_wpeak);
0 L. m& B) K( L% u8 Csubplot(614)
  ]0 r0 s& {) yplot(D3_wpeak);
* w7 \- c$ W% g5 csubplot(615)
# z+ G4 S1 C3 t( A8 d, ^' Jplot(D2_wpeak);
  o0 f# R0 Z& G$ |6 x4 P2 vsubplot(616)% O2 a; o5 L8 O/ d
plot(D1_wpeak);" ?/ o$ w. V( k& U+ ~
[value,index]=max(abs(D2_wpeak))
1 `2 A. _2 z4 {7 J2 C. A[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 - L( `; z; n) L" M4 s* z
    1 n$ d8 l* i2 A4 j7 o  L
    ( A+ c8 k, Q! ]7 l7 `( l
        我也来请教~·
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

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

    该用户从未签到

    尚未签到

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

    本版积分规则

    招聘斑竹

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

    GMT+8, 2025-5-16 02:21

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

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