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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
原始图形如下,添加了噪声,使用的是db3小波,做了5层分解。  X& l5 T+ r7 R5 X
可是使用模极大值法检测不到第二个波的波头,不知道为什么?6 S. I6 v7 \, {
请达人指教。
! i# [, s7 Y5 X2 }  q源程序在如下7 u; K) e% P% d8 w3 u3 ~
plot(cable(:,1),cable(:,2))
1 u( P  J# p5 K/ Q: ^) y6 {tcable=cable(:,1);9 Z" ~9 `* F6 F( i3 k1 N. |" w8 ?1 M
ycable=cable(:,2);, d; h; o9 Z: G1 V5 z  P- v0 O0 c
length(ycable)
7 N$ M3 |. y- T9 t) U9 V8 \. [+ o% m' Q, s& t
signal_length=33856;% e( K& O8 d7 ^+ _/ O" M* h1 H* v
t(1:signal_length,1)=0;
- e3 }5 X7 F3 R4 X; W( Z  N Ncable=length(tcable);% q# }1 }+ y" ]9 J0 ^* i2 l
for i=1:Ncable
! D7 D" q2 {7 @ t(i,1)=tcable(i,1);
, Q; n- t+ H* S3 ^2 _) e end
) E0 q" R$ n* W6 T0 N- H+ I 5 r5 i) ^7 V6 V- K
y(1:signal_length,1)=0;( o; f+ l- C/ a! S1 f6 ]$ X1 p+ C
for i=1:Ncable, n6 }( l5 T. O7 }- R0 [6 m
y(i,1)=ycable(i,1);' q$ b/ I0 f" }' e( j
end& v8 |- a  {( W$ K; G, t' [
noise=0.01*rand(1,length(y));
5 X) z0 e- \1 J8 s% N6 n1 s0 fy_noise=y+noise';9 Y3 R' R$ @8 z
' B/ Z: [- |* v+ U
signal=y_noise;
9 v/ s6 \2 u4 M& `2 \7 U%plot(t,signal)3 S& K  r: D. f( k" u" y6 u
points=length(signal);        level=5;    sr=360;   num_inter=6;   wf='db3';8 D$ w5 h' E8 U! Q! Q
%所处理数据的长度    分解的级数   抽样率    迭代次数        小波名称
7 N, l# r" g3 t% O8 l+ r9 N' b1 poffset=0;
+ @5 _9 {$ x5 s  X) O/ P% m
& Z4 p' A( G$ v9 S9 Y% v/ B
/ |( @0 r% o3 y* {%____进行二进制小波变换(离散平稳小波变换),并给出各级波形:5 Q( U, p/ C# {5 j% C3 O
[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters(wf);%Lo_D:分解低通滤波器/ ?- R; _* v, p) f4 Q0 m* I
                                   %Hi_D:分解高通滤波器
( u2 }2 Q& I/ P/ [                                   %Lo_R:重建低通滤波器
8 L3 f# z: K, T1 B                                   %Hi_R:重建高通滤波器2 G1 a" n! Q; o! h4 E
                                   ) H/ ]6 s# p2 _7 h. P- p/ y
[swa,swd] = swt(signal,level,Lo_D,Hi_D);%swa小波概貌( u) c" U" u$ M1 o+ T
                                        %swd小波系数3 G+ V1 b0 H" H" `' I4 A2 L

/ }2 W9 x$ F' r0 u6 }7 Qfigure;%figure1: T# E; O, G; r- r1 H
subplot(level,1,1); plot(real(signal)); grid on;axis tight;& P* ]" D1 X4 g
for i=1:level
4 c2 W  J& Y3 |2 H- r/ \' Z9 ~# s1 O    subplot(level+1,2,2*(i)+1);: e$ S3 @6 P6 N( i4 c) k( W3 K
    plot(swa(i,:)); axis tight;grid on;xlabel('time');! @2 Y* e* G0 |$ I
    ylabel(strcat('a   ',num2str(i)));9 t' g/ W1 \& c
    subplot(level+1,2,2*(i)+2);; _1 N$ h$ r. v6 i# s1 d5 K- k) g
    plot(swd(i,:)); axis tight;grid on;
% _. K% m' c0 u  _# i7 E; A$ j( q4 vylabel(strcat('d   ',num2str(i)));+ ?$ [4 H7 E7 E2 l4 Z/ P" i: ]
end
. A7 l. X- {8 T* D' I5 y%以上内容是对信号进行离散小波变换。( Y" X) k& s4 y4 _& e. @, E
%尺度为5, c/ r% p7 R  t9 h% T

: t" |+ F- `* J+ N, O
8 Y7 s' M5 ^7 R$ _3 N3 S+ ~+ h0 o8 N) F; _
%____求小波变换的模极大值及其位置,并按级给出小波变换模极大的波形:
5 R1 M. \# z; t, c2 i7 Z2 {& B% swa:小波概貌;  swd:小波细节;
) h3 o9 w% g3 q1 D0 Y, ?8 t7 S  r% ddw:局部极大位置; wpeak:小波变换的局部极大序列。
5 e. K& e! l* k2 n# jddw=zeros(size(swd));%建立与swd维数相同的矩阵,矩阵值都为零& Q' N! H' q4 b! [% u- ?! ~# D
pddw=ddw;8 J, B. `. }1 c1 l2 K; v
nddw=ddw;
$ v+ b: `; z, E- y7 Z2 Z6 ^posw=swd.*(swd>0);%.*数组乘法,将swd中小于零的数置零
7 U6 p- }% K, s) Ypdw=((posw(:,1:points-1)-posw(:,2:points))<0);
6 i- x4 ~& I1 a2 `( c8 D; P5 i6 |pddw(:,2:points-1)=((pdw(:,1:points-2)-pdw(:,2:points-1))>0);  G! T! c! E9 ?: E  b
negw=swd.*(swd<0);%将swd中大于零的数置零$ Z1 E3 i  ~7 {& U% q! L- ]3 i
ndw=((negw(:,1:points-1)-negw(:,2:points))>0);6 N7 @$ l8 p4 z" r- R0 i; s
nddw(:,2:points-1)=((ndw(:,1:points-2)-ndw(:,2:points-1))>0);
9 |- A/ v6 k3 I+ S1 d. Uddw=pddw|nddw;%|:或
5 f. R8 d( T$ D* K5 N. y$ a$ Iddw(:,1)=1;  I  J9 O; c% {& M' w
ddw(:,points)=1;
" n$ N8 Z$ c+ @$ H5 p: ~wpeak=ddw.*swd;
0 z# Z# i+ H) L4 G) G! }, Hwpeak(:,1)=wpeak(:,1)+1e-10;%第一列的值加上1e-10,不知道出于什么目的,目前看来不会对结果产生影响4 Y$ g4 V. y  Q" }2 Q
wpeak(:,points)=wpeak(:,points)+1e-10;%同理,将最后一列的值加上1e-10,不知道出于什么目的,目前看来同样不会对结果产生影响, \+ O7 {* Y# P; a
%以上内容为:寻找每级尺度上小波变换系数对应的模极大值点
9 C; |3 J# G, O6 B& E6 a
) x! Q5 n: J( O! C6 `wpeak_threshold=wpeak(level,:)/max(abs(wpeak(level,:)));6 L9 j) w5 U9 Y9 O% M
threshold=0.1;  %  阈值
/ E7 l1 S3 y; Y* ~2 k
7 w$ M' z7 h# zfor i=1:points;6 U' E; q- r: f: q6 y
   if (abs(wpeak_threshold(i))<threshold)( o, c) R+ ^4 l; O; x, U. N) z
        wpeak(level,i)=0;
5 c* ^, p% O' f. T$ }+ g    end6 K0 p& n! h9 }$ Y
end; . }! f2 c9 s# N+ A4 e' T6 c% u, m
D5_wpeak=wpeak(level,:);- I9 r# o/ J# t1 K

/ i6 }  [, F! V5 e, a" d%对最大尺度2.^J上的极大值点设定阈值T0,将低于阈值T0的模极大值点去掉,
) ]. V7 j" T9 ]7 n7 W. r% Z, \0 t9 e5 D" F

' d, v( ^7 r$ Q2 [6 Q+ m: X%____进行模极大值的处理:) o/ B' {" I5 g  e! t: x7 z, e
%%C=0.8;
* a0 V! a, H5 a% K$ }%此参数需要调节,为了在最大尺度上设定合适阈值,以确定最大尺度上该保留的模极大值点。; f  p% A' N$ F) k9 d4 F
%%D5_wpeak=wpeak(level,:);
. u% i0 j- B1 c. g%%M=max(abs(D5_wpeak));0 b. j8 l$ |# w! Z/ K
%%Thr=C*M/level; %阈值计算,可参考论文:"3mm波段脉冲雷达系统研究和小波去噪分析"。
2 R$ i7 E5 z+ i7 q6 J6 \/ `%%for i=1:points
8 F$ X% J) N) I4 l3 p8 K6 A! C# r%%    if(abs(D5_wpeak(i))<Thr)
3 T  N; M, X; d%%        wpeak(level,i)=0;
! b9 h. b0 P9 L, b6 S: y$ b9 B1 Q%%    end
* `4 ]; z5 ?- F; ?; R%%end
+ N+ @- i$ M6 ~  x%%D5_wpeak=wpeak(level,:);( H) ~! y$ B" L3 V& h& c
' d5 v# _, h9 \
figure;%figure20 l  M- z- q7 A) _8 d  ]
subplot(level+1,1,1); plot(real(signal)); grid on;axis tight;- s* N" W  O  b
for i=1:level
* O7 o' M9 t6 _0 Z' B, Y    subplot(level+1,1,i+1);
. Y- u# Q% R$ z" h( O# N  ^    plot(wpeak(i,:)); axis tight;grid on;4 ?0 B+ s( r) O" I% @  H* ^6 w
ylabel(strcat('j=   ',num2str(i)));
3 ]! R% y! E2 D- ~  [* yend
9 v& S2 w4 P$ c+ p- V1 |" o/ T0 H
( V! B- M: s3 K: y6 F6 m# t# _/ _/ v) U, k2 u
%步骤4
) w& J4 b! t. ]& I8 u1 E%模极大值的处理方式:7 p- u( h$ N( {7 h
%在尺度j上极大值点位置,构造一个搜索区域,
; z, U) O/ n# D%在尺度j-1中,极大值点落在该区域的点保留,其他的置0;
' V+ H) _, f8 V: H0 B' ?D4_wpeak=wpeak(level-1,:);
& i3 M& T3 X) ^0 C3 b  |sousu=6;8 k, W% J) |# ~# {3 A
D5_p=(D5_wpeak~=0);4 r, M0 O1 U0 l$ a
O_d5=sousu;%该参数确定在上一级搜索极大值的范围,可以调整。
! C+ Z( [4 F6 h6 }' Zfor P_d5=O_d5:(length(D5_wpeak)-O_d5);
) o3 w% @' Y7 v* O$ L5 q: ]8 r2 Y    if D5_p(P_d5)==1; % _" n& n$ x- X# s$ ^- z) I3 P% F
        for i=1:O_d5-1;
  Z7 I4 N4 \0 p0 y) w" r$ d) n- ~        D5_p(P_d5-i)=1;  " m! m4 U- v, ?( \) V7 `( h* K+ g7 y
        end ;* R( t' Y2 _1 j9 n8 m$ V
    end;     
- A/ u# m7 P. O$ |end;5 g2 ]) B1 C4 D9 v7 n
D4_wpeak=D4_wpeak.*D5_p;
, J4 x4 C/ a( y6 D% Y2 S( S5 }! O: |! s- _/ C% K: x
D3_wpeak=wpeak(level-2,:);
' k( y  n; r% Z9 B2 }8 W* }  {% KD4_p=(D4_wpeak~=0);8 f7 @4 Y* T+ ]- P3 |& s
O_d4=sousu;%该参数确定在上一级搜索极大值的范围,可以调整。
7 ]& T) A; U0 z# V( k5 z& E7 pfor P_d4=O_d4:(length(D4_wpeak)-O_d4);$ [' G9 W- F- d% D
    if D4_p(P_d4)==1; * a$ a8 \  T$ `9 Y2 t
        for i=1:O_d4-1;6 A5 p  z* `8 a- [
        D4_p(P_d4-i)=1;  6 K% J! }1 {+ s
        end ;% J! C- N* e$ f& w4 S3 o0 D- r
    end;     
! {, u% _+ ~3 {8 x5 Pend;
$ j( e& s$ G: d1 u  cD3_wpeak=D3_wpeak.*D4_p;
: _/ n/ W, D' F  \+ |
8 \. a0 @9 W6 q" b; ^( B% s# W/ ^D2_wpeak=wpeak(level-3,:);
  F6 F: y  c6 ]) `! K4 j0 pD3_p=(D3_wpeak~=0);
$ y7 U; I9 k5 @, y: \O_d3=sousu;%该参数确定在上一级搜索极大值的范围,可以调整。
$ P7 P/ P7 k! u- d, y4 Jfor P_d3=O_d3:(length(D3_wpeak)-O_d3);
2 `! I' ^: {* ~. O! w9 G, W$ b+ Y    if D3_p(P_d3)==1; 5 G* H; I' f) a0 w$ [
        for i=1:O_d3-1;: N) P3 k0 }6 r# o' m3 a7 ?9 \
        D3_p(P_d3-i)=1;
, u: f  i0 U# x- {. p( }' m        end ;9 t' L( [  o  A& X! _+ {/ o
    end;     % e! \) D, P, {
end;
  E& I% L& r2 S0 b8 K( j: \2 ^7 fD2_wpeak=D2_wpeak.*D3_p;! B; [+ ~5 ^& B8 M* _
* c) h& J( ~4 b1 I& L0 M; _' U0 K
%第一层单独处理,在第二层极大值点位置上,保留第一层相应极大值点:  E% X8 B3 h: Y+ g3 O- [5 D
D1_wpeak=wpeak(level-4,:);) w" a, Q) E; j1 Y7 Y2 m+ J
D2_p=(D2_wpeak~=0);. W  S1 R+ u% O; w
D1_wpeak=D1_wpeak.*D2_p;
' c" z( d/ N; [7 Q3 }( b5 k% Y. q# _- i% s4 Z: K5 n9 S
wpeak=[D1_wpeak' D2_wpeak' D3_wpeak' D4_wpeak' D5_wpeak'];/ {( f) y- M1 ^* Z- @$ o/ n$ a
wpeak=wpeak';0 j- o$ h/ u2 x0 @& |# x/ D8 J

; o; @" o: A9 k7 A# i2 o%____重构信号:
! v) E( b* @0 T, Y# |5 w. C! Xpswa=swa(level,:); % pswa: 为待重建的信号$ d2 ^1 }9 N% r' ]
wframe=(wpeak~=0); %迭代初始化& T+ W$ I$ d) m0 ]% F8 `
w0=zeros(1,points);
5 U& {' N- I" g& g( `# N6 }[a,d]=swt(w0,level,Lo_D,Hi_D);
' o- n* x0 ]5 m8 |( aw2=d;  % w2为待重建小波+ |, M7 A) g% o0 M3 M$ _
    for j=1:num_inter% r/ [4 O, J0 V" e* U% o5 S" p" R
       w2=Py_Pgama(d,wpeak,wframe,1,sr);   % 先进行Py投影和 Pgama投影# S; I- T2 p* y$ I% u! k, S2 w
       w0=iswt(pswa,w2,Lo_R,Hi_R);         % 再进行Pv投影
! I4 k5 s5 m$ O       [a,d]=swt(w0,level,Lo_D,Hi_D);      % Pv
; u) S0 e6 k9 H" A9 w" ?    end% z7 h6 T: \( f  D5 x
     pswa=iswt(swa(level,:),w2,Lo_R,Hi_R); % 计算重建信号   
" G, m6 X8 ?8 _0 a: g     
. z  {- y4 w" i' {0 t$ h% Txcrr=y'-pswa; % 重建误差, v1 E  X' k% U* m/ @
figure;%figure33 F/ F( \. S; H5 C
subplot(411)
; P. U/ M. i% Y& r2 |plot(y(1:points),'r');1 z+ p, K/ i1 C( A8 ?
axis tight;- i  b) w3 `2 S2 A4 D0 f$ G6 ^
subplot(412)3 Q1 e9 M4 l5 m) ]) e0 ?" }; G
plot(signal(1:points),'r');
, `  h/ g1 B0 v. }1 laxis tight;
5 f: W, {3 U0 V# ?1 asubplot(413)/ H& d+ D  _2 S% V2 A) R! D
plot(pswa(1:points)); 1 A2 D6 K7 @/ ^/ ^
axis tight;& {) o2 p  ?+ B; W; n1 g
subplot(414)
& t9 ^) H6 R/ Z! cplot(xcrr(1:points));
: |$ X- f/ N7 G6 ]% Qaxis tight;
: a1 `# B) P% f& Jfigure%figure4. E& q( [$ k0 G& U/ g; y, a
subplot(611)9 {; L( c7 x4 ^5 c6 N- W
plot(signal);" r; b6 `6 q& U: M2 F* W, d4 w8 B2 ~
subplot(612)) n$ Z  O+ o- y2 D4 n: |
plot(D5_wpeak);# H% ~- V; x* l& w- c- e
subplot(613)* b8 N4 W) L  X4 E3 F. D) a6 Q
plot(D4_wpeak);/ V# p4 S) T* s2 b4 t+ L4 H
subplot(614)7 F' B7 R5 T) r  c
plot(D3_wpeak);/ [9 {2 J4 a1 z; G; U) h
subplot(615)
4 K! a4 h$ B! u3 r0 P; rplot(D2_wpeak);% z& x6 s: J/ K' B  ^% R
subplot(616)7 W) O* I9 \. N! Y
plot(D1_wpeak);. c* C0 m1 Y* n1 R
[value,index]=max(abs(D2_wpeak))
( b4 t: u: g5 }8 D4 h/ B4 k6 n[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 * z! B- I3 S5 {# @; s

    ' \" R  V* h7 m! g4 b4 q, |3 P" ^5 S: g
        我也来请教~·
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

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

    该用户从未签到

    尚未签到

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

    本版积分规则

    招聘斑竹

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

    GMT+8, 2026-10-24 17:27

    Powered by Discuz! X3.5 Licensed

    © 2001-2026 Discuz! Team.

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