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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
原始图形如下,添加了噪声,使用的是db3小波,做了5层分解。
. D, P* P4 X3 c5 O4 j3 }# u! W8 E可是使用模极大值法检测不到第二个波的波头,不知道为什么?
. h3 N# ~2 p/ w% B4 ~请达人指教。
$ }7 a, g2 s6 |1 c( K# P4 e6 V: O$ w源程序在如下  g# A9 }3 d/ `3 U0 o8 K
plot(cable(:,1),cable(:,2)); x: b! v7 d; I0 c4 V
tcable=cable(:,1);
$ k0 Y4 P% n! a) Vycable=cable(:,2);8 l* j! H7 }2 R  z9 n# a
length(ycable)
5 P$ J9 l. @  N0 T0 ^8 S% L- C3 l2 v9 A" [
signal_length=33856;5 I- p$ I: Y9 ]' G8 M
t(1:signal_length,1)=0;3 f$ ^" Y& `4 x! e2 y- |
Ncable=length(tcable);; X  D) g' i& o/ ?5 \% m
for i=1:Ncable) d' G' f' ^4 D
t(i,1)=tcable(i,1);
" o/ |, Y: }! l4 W, j! r+ k8 T0 O end
: ^5 m* h' B8 s' r" q/ w
; G+ J4 t4 k4 _1 n# c& ~; gy(1:signal_length,1)=0;. ]8 F$ e$ ]5 z! A
for i=1:Ncable
3 ]: c' V: n- y( A: y y(i,1)=ycable(i,1);, R: t, V+ p0 `  R
end4 Z1 y* E/ u* {0 p& M2 t/ x; o
noise=0.01*rand(1,length(y));6 R* N" V3 m' F
y_noise=y+noise';% C# y8 q; s+ P5 Z0 b8 e4 t* ]
: T9 c4 h) u% {% a
signal=y_noise;2 K3 [! |/ ?6 I
%plot(t,signal)( z5 y$ L, {/ |! @' C' v( o; b) y0 N
points=length(signal);        level=5;    sr=360;   num_inter=6;   wf='db3';
+ |7 b1 Q0 u) h3 _$ c* A" b# I+ c) R%所处理数据的长度    分解的级数   抽样率    迭代次数        小波名称
5 E( G4 \$ V0 g) v5 zoffset=0;
, G: G  j4 y9 A; e4 Y& }: n
- @0 ^6 A7 E6 k  n  }- D2 H
) \3 k& u& M# B/ x! |0 i%____进行二进制小波变换(离散平稳小波变换),并给出各级波形:- p; \- s7 _$ ?$ x; c
[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters(wf);%Lo_D:分解低通滤波器
3 ]( L" d9 a1 l- l7 k  l# b- r                                   %Hi_D:分解高通滤波器
) U( Q) H, f2 H/ V! J; G                                   %Lo_R:重建低通滤波器
8 z$ H) D0 S1 V& q0 C0 S, C+ V                                   %Hi_R:重建高通滤波器; {2 W* w. s; c9 ?, U+ Z" D9 K2 `& B: P
                                   
7 T9 ?- C, N, @0 V, t! ]- L' s% b[swa,swd] = swt(signal,level,Lo_D,Hi_D);%swa小波概貌
- A3 D5 q% R9 h- ~% V* o                                        %swd小波系数
+ M0 _) u0 B6 r$ K, ?- M ; J& e; p3 R# g
figure;%figure1
' B+ a' [4 z4 A# |5 q2 asubplot(level,1,1); plot(real(signal)); grid on;axis tight;
. u: F# e, r1 [+ Z6 z% u. H# ]' Yfor i=1:level
0 `. s/ f/ H! h' {# d2 h    subplot(level+1,2,2*(i)+1);
5 d  R  }; t5 q! }7 @    plot(swa(i,:)); axis tight;grid on;xlabel('time');
5 o* z# J: h  i& `8 X0 X9 N    ylabel(strcat('a   ',num2str(i)));
( v" c/ b& k0 _* u    subplot(level+1,2,2*(i)+2);/ o' z' W: o, y) o& @; O' o7 S
    plot(swd(i,:)); axis tight;grid on;! O; v0 j& v& z, j1 t& O, n6 }
ylabel(strcat('d   ',num2str(i)));
, Q; \" [9 p/ J7 tend6 Y3 A6 C- K: n) [
%以上内容是对信号进行离散小波变换。
" W  h. P. K. y%尺度为5" C/ J! h# w( a& F5 |- a
' S8 W' h+ w' h2 U/ U" t: R

  K0 t4 v  @4 g! h- r' m: w6 ~  X; u+ S/ L& A6 I
%____求小波变换的模极大值及其位置,并按级给出小波变换模极大的波形:1 J: ?2 f7 T: x0 M& ]2 v- d* Y9 J8 w
% swa:小波概貌;  swd:小波细节;
/ R5 A/ _0 A$ H* |" c  S: {% ddw:局部极大位置; wpeak:小波变换的局部极大序列。
/ N( M) X/ M! @& T7 i- X, f% j8 Nddw=zeros(size(swd));%建立与swd维数相同的矩阵,矩阵值都为零
7 [% E" B+ v0 V) p1 npddw=ddw;0 X9 u5 J( r7 |+ {+ j, f4 p
nddw=ddw;* T- W" C6 _8 G+ c
posw=swd.*(swd>0);%.*数组乘法,将swd中小于零的数置零& P  Q: J7 Z( |( J/ g7 ^  c
pdw=((posw(:,1:points-1)-posw(:,2:points))<0);* L7 I- D( z  \! u: A  \' |
pddw(:,2:points-1)=((pdw(:,1:points-2)-pdw(:,2:points-1))>0);- P" p; B% H9 ^( |/ l
negw=swd.*(swd<0);%将swd中大于零的数置零
5 W# T! F; X0 j& pndw=((negw(:,1:points-1)-negw(:,2:points))>0);
. B' D9 M. j1 A/ |" [nddw(:,2:points-1)=((ndw(:,1:points-2)-ndw(:,2:points-1))>0);2 j% E2 w9 _/ \& m0 P0 D
ddw=pddw|nddw;%|:或5 q$ f" ?. v. {8 O6 i7 o- ~% u* Z
ddw(:,1)=1;
' I5 Y9 B8 X, T9 M! Yddw(:,points)=1;0 F/ `2 l1 ]4 _# {3 J: h
wpeak=ddw.*swd;
% {5 F' h" _% y% \wpeak(:,1)=wpeak(:,1)+1e-10;%第一列的值加上1e-10,不知道出于什么目的,目前看来不会对结果产生影响
: `0 X# w! g: L* ywpeak(:,points)=wpeak(:,points)+1e-10;%同理,将最后一列的值加上1e-10,不知道出于什么目的,目前看来同样不会对结果产生影响
9 e% r( W# K6 k! M* J%以上内容为:寻找每级尺度上小波变换系数对应的模极大值点
( o6 t6 Y5 ?1 B: ]
* o$ s) Y9 o  U, f) hwpeak_threshold=wpeak(level,:)/max(abs(wpeak(level,:)));
7 y! l$ j' K. ?4 ^0 @! U: K4 wthreshold=0.1;  %  阈值
4 n7 j% a4 a+ L6 e* A9 Y0 K% M. D' J4 M/ O+ L3 H7 I& |
for i=1:points;
, D! Y. }; G1 |" ~' f   if (abs(wpeak_threshold(i))<threshold)0 T2 K: d2 o: R& }& E5 q
        wpeak(level,i)=0;
9 M' K) k. ^: @: n2 Q    end& ~" r* k7 _3 N) _
end; + i0 L+ T6 f5 \+ `$ `
D5_wpeak=wpeak(level,:);$ z# \% L9 F+ X" e5 t" i  \

. g7 ^  B9 G7 i- ^%对最大尺度2.^J上的极大值点设定阈值T0,将低于阈值T0的模极大值点去掉,& e& z  H4 i' g  a8 `

. R! N6 ?+ g9 p& f- s6 |  l$ X3 `3 K" O
%____进行模极大值的处理:
0 ?. }" p6 _3 s1 a! J9 _%%C=0.8;
$ L: B2 Q2 [' G# x%此参数需要调节,为了在最大尺度上设定合适阈值,以确定最大尺度上该保留的模极大值点。
; b& g- Y- }3 m/ A%%D5_wpeak=wpeak(level,:);2 R: t! S8 g5 W
%%M=max(abs(D5_wpeak));) Q" {5 R7 J8 j  m7 k, d
%%Thr=C*M/level; %阈值计算,可参考论文:"3mm波段脉冲雷达系统研究和小波去噪分析"。2 W9 A6 X( s5 p* _
%%for i=1:points
+ C1 N) Q' V" h4 U%%    if(abs(D5_wpeak(i))<Thr)
' ]. B: s! g0 j6 K+ K' t5 D& W%%        wpeak(level,i)=0;
  T; h$ ?/ J7 z# B7 f%%    end7 l9 l5 m3 e- i3 s! H3 [2 G2 f
%%end, }: P2 ^) m) ?! ^  l# b8 Y6 y
%%D5_wpeak=wpeak(level,:);& E4 K  I3 T+ u
. F3 |0 A+ `0 b+ O( |
figure;%figure2
; }/ O6 f- e: x4 f5 i6 l. e# n1 vsubplot(level+1,1,1); plot(real(signal)); grid on;axis tight;
. f: y) z/ X8 t9 Ofor i=1:level5 ?- A8 q  `/ _1 R* y
    subplot(level+1,1,i+1);
  u! h5 U9 N6 ~8 a; L9 `    plot(wpeak(i,:)); axis tight;grid on;
5 t- M8 d% K4 |ylabel(strcat('j=   ',num2str(i)));
: V& ]( N1 ~$ a: d9 A- P; s4 Hend
5 r" q8 r- e5 @+ W
7 v$ A% c! ^0 ]4 ~
* C1 [" F3 f3 i) `%步骤4
  |% `1 e& L8 r/ Y6 w  j%模极大值的处理方式:
' M4 s  Z& D$ ^, w$ Z9 e%在尺度j上极大值点位置,构造一个搜索区域,
9 \6 C" |7 s2 G0 Y7 d6 h%在尺度j-1中,极大值点落在该区域的点保留,其他的置0;! F9 J# _5 Z0 e  w
D4_wpeak=wpeak(level-1,:);: @3 s' V& V) q$ P0 ^
sousu=6;. R1 a8 ^$ P* M; u4 b
D5_p=(D5_wpeak~=0);& j8 J# _/ M9 S, v9 @
O_d5=sousu;%该参数确定在上一级搜索极大值的范围,可以调整。
/ T5 v4 u; T' I) mfor P_d5=O_d5:(length(D5_wpeak)-O_d5);7 O* g$ b9 x4 H4 [
    if D5_p(P_d5)==1;
$ ]3 C, N8 R, `* O0 G        for i=1:O_d5-1;4 r+ |2 u- m1 w. n
        D5_p(P_d5-i)=1;  8 s: l9 F. |; H! n
        end ;* W3 i# E) f3 r, H" b  T8 i
    end;     * M+ K4 `' |. S4 ~7 ~
end;7 ^0 D; K/ }( e3 _' U5 B
D4_wpeak=D4_wpeak.*D5_p;5 K# W; T3 d5 |8 B+ j) M
5 t- W) W, y" F% F8 ~$ b4 l5 Y
D3_wpeak=wpeak(level-2,:);, w; R2 n2 q- |, [' {8 |
D4_p=(D4_wpeak~=0);
$ v/ Y$ M. N& O3 z$ z1 _) y! GO_d4=sousu;%该参数确定在上一级搜索极大值的范围,可以调整。7 ~( d5 i2 J+ X0 S# e  Y
for P_d4=O_d4:(length(D4_wpeak)-O_d4);) p+ [# B5 G2 `! u( |
    if D4_p(P_d4)==1;
& P4 H) w/ D" |# _( _* e+ g6 Y  w        for i=1:O_d4-1;
/ j3 P' H3 K% C$ \# O        D4_p(P_d4-i)=1;  
* `+ L4 R8 w% ]8 F% p  N$ E        end ;
. {* R( U9 k$ v' o3 i1 W    end;     ( R' E, k& E: A
end;: R$ [5 V- x: y' c, E& @
D3_wpeak=D3_wpeak.*D4_p;
- p: K) l) K& ~$ V* `+ _2 R
7 d  K/ z# o9 y& C* H! bD2_wpeak=wpeak(level-3,:);
" z* J3 t; c/ \$ \. gD3_p=(D3_wpeak~=0);
* p8 j7 g# V# p$ T) @" O% ~O_d3=sousu;%该参数确定在上一级搜索极大值的范围,可以调整。5 e. T: k# b6 d2 K7 X
for P_d3=O_d3:(length(D3_wpeak)-O_d3);# [2 @6 ?+ J5 D, M. t" W
    if D3_p(P_d3)==1; 0 w9 N3 h* s! P3 l0 g* r
        for i=1:O_d3-1;
( a; J$ _3 c5 G# u7 @        D3_p(P_d3-i)=1;) w4 {  X# X5 |* E+ N
        end ;
+ h$ U7 \- U3 c! |! [/ Y    end;     
1 i! `* t$ {/ x4 V6 ^: Hend;% i1 g& M& h7 W( m
D2_wpeak=D2_wpeak.*D3_p;3 Z4 B) w1 T/ h! t6 n

3 \; y* L, e4 f7 p9 }%第一层单独处理,在第二层极大值点位置上,保留第一层相应极大值点:
+ k1 ^# {8 X; ?2 K! dD1_wpeak=wpeak(level-4,:);
% O! X8 P/ t8 e2 e* pD2_p=(D2_wpeak~=0);* |5 g+ T3 G1 H+ V
D1_wpeak=D1_wpeak.*D2_p;
# S  q+ M# i: i- r% a" J2 G0 J; P) {  {4 L% j5 N. s
wpeak=[D1_wpeak' D2_wpeak' D3_wpeak' D4_wpeak' D5_wpeak'];
( Z8 c. D7 w' ?  T% V8 l) G* T( Awpeak=wpeak';& p" C0 W% L0 f0 q5 ^0 g

$ |$ t& q; |, Y- X, d: u  q5 k%____重构信号:+ R1 U6 {5 {- T8 A
pswa=swa(level,:); % pswa: 为待重建的信号
$ k) [& X! \. z+ N3 Uwframe=(wpeak~=0); %迭代初始化
/ \; v' |8 [- v5 o0 q) Hw0=zeros(1,points);" ~9 O* `. Z0 ?, Z  r% O/ i
[a,d]=swt(w0,level,Lo_D,Hi_D);
3 H' I$ E3 X, p: Z4 M! cw2=d;  % w2为待重建小波
* w3 I5 r& f: }, @  `# |+ j! Q    for j=1:num_inter
" ^1 [6 f, T7 ?! U       w2=Py_Pgama(d,wpeak,wframe,1,sr);   % 先进行Py投影和 Pgama投影. `# W6 Y: E/ ]8 I4 k) R
       w0=iswt(pswa,w2,Lo_R,Hi_R);         % 再进行Pv投影
# Q& u/ \- X- D" X1 R       [a,d]=swt(w0,level,Lo_D,Hi_D);      % Pv
& }4 d0 Q( {# M: M& ?/ V    end
* D, U! {3 V2 T* s+ j     pswa=iswt(swa(level,:),w2,Lo_R,Hi_R); % 计算重建信号   
% H2 A. [# J+ N     
5 e* P; ?4 l) U9 v, V  Txcrr=y'-pswa; % 重建误差
# s2 ~- y# D7 ?$ X' lfigure;%figure3
+ O0 x& D+ w2 q; ]& f2 i, ]subplot(411)
# S& ~! N9 Q+ I$ z) r' l( N3 ?plot(y(1:points),'r');
8 }5 Y$ ]% G( H+ Taxis tight;* h1 k5 N# X7 ^) b1 m9 x4 e4 x- Y
subplot(412)
2 D5 e: Y6 p: A5 z; k: W) S9 @0 `plot(signal(1:points),'r');' B) [) e% t: [4 p
axis tight;1 _- a. B3 L7 x
subplot(413)
3 D6 s( v7 g4 b6 C* y9 H2 Dplot(pswa(1:points));
0 A6 D: c  G4 S. raxis tight;5 n/ v5 z# G$ V. U) \) }) F7 [' J. c4 J
subplot(414)! w, n9 X+ P$ o. R# v! |- y; i
plot(xcrr(1:points)); $ D) n5 z2 Y; _1 `( V0 x7 c1 r
axis tight;
  S) p! U# C$ Ifigure%figure4! t9 l- P7 d9 s5 h1 v0 Q) j
subplot(611)
* S* R: s$ }' xplot(signal);9 }$ y, _  d3 D' w* @  `' S
subplot(612)
; e/ y' G5 U8 ?$ X4 X6 ^plot(D5_wpeak);
/ Q% U3 u  Z6 E& R) rsubplot(613)4 K5 l5 f8 T2 t6 R' B( {; L
plot(D4_wpeak);' P' X. s1 M9 a
subplot(614)
6 {1 h) J5 f* Q4 Vplot(D3_wpeak);
; X( c! z" x2 D! v' lsubplot(615)
  a6 c  K+ Q1 {4 j  l  bplot(D2_wpeak);0 q2 q% }! C  ^& X6 R; \- _
subplot(616)/ b; j: O. H! r* \1 I8 j8 h
plot(D1_wpeak);8 ~$ w) A. u1 t  X* r4 f
[value,index]=max(abs(D2_wpeak))
" q3 T+ t* R2 o, o# n2 |[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 : K& @. `6 S% H( G

    0 h: I- B: U2 x& u( ]% H$ {6 Z1 }5 Q2 R/ ~% A/ i
        我也来请教~·
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

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

    该用户从未签到

    尚未签到

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

    本版积分规则

    招聘斑竹

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

    GMT+8, 2026-10-9 13:30

    Powered by Discuz! X3.5 Licensed

    © 2001-2026 Discuz! Team.

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