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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
原始图形如下,添加了噪声,使用的是db3小波,做了5层分解。
" g( o2 c. n+ `6 @7 `可是使用模极大值法检测不到第二个波的波头,不知道为什么?
9 H2 S/ m. u4 q8 y1 l- f9 t0 u请达人指教。( I. g; P! b( X2 h2 m( u2 o
源程序在如下
$ I$ J; `8 U  s! `. Hplot(cable(:,1),cable(:,2))2 }8 c! S2 w7 h8 T6 O% t* j3 o) T
tcable=cable(:,1);! e1 y$ k) e' S6 `) g! D
ycable=cable(:,2);& U( b# A6 b+ |2 T: x6 X7 z
length(ycable)( o1 @  \( k# M; c
6 U# s2 R) V/ d* A5 I- A
signal_length=33856;
' w8 o9 c/ \( t& k4 v: U t(1:signal_length,1)=0;
; ^% [; ~% R3 ^* n( I# v; U7 l3 }) R1 @+ K Ncable=length(tcable);
" {9 `: B* ?$ R; N/ @ for i=1:Ncable
2 n1 u# i4 |/ `9 u0 }! E. G% | t(i,1)=tcable(i,1);( w7 R) H, _! v7 ]9 E# S
end; v$ `  m: p8 Y2 H0 T9 Z, ]9 |
/ D% ^+ e  b7 K$ i
y(1:signal_length,1)=0;
' A$ }+ S, |" d7 jfor i=1:Ncable0 h! [) W' }* [) f5 S
y(i,1)=ycable(i,1);
. c- i" M; b. d2 Dend
. e9 `' J& b# O% D noise=0.01*rand(1,length(y));9 F& }) P- N! n# d: G
y_noise=y+noise';
7 W# P# U# s3 G. H' a9 C; g* B0 ^& L5 L2 x4 T( W7 i# n- \5 `" Y  o! M" o
signal=y_noise;# ~4 t: h$ ^$ n. Q' w* }
%plot(t,signal)1 G' l  {5 f# M) G4 s' [
points=length(signal);        level=5;    sr=360;   num_inter=6;   wf='db3';0 f; W. `% G/ W5 P) R& b4 l/ o
%所处理数据的长度    分解的级数   抽样率    迭代次数        小波名称
7 M: i( |! R' E1 Goffset=0;
, S6 A8 m4 c2 D- D. K4 {* U
$ d5 l' F5 a/ E! U2 d( W( j1 i9 g
# @7 J% e& k" z) e( ^2 V%____进行二进制小波变换(离散平稳小波变换),并给出各级波形:
; P: W4 v9 t1 Y  d! n[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters(wf);%Lo_D:分解低通滤波器4 Y' r! I! n  k- c( ]2 R
                                   %Hi_D:分解高通滤波器
+ V1 r% q1 L( C# V& G. C& p                                   %Lo_R:重建低通滤波器5 l# P4 ?% J5 Y2 M3 z
                                   %Hi_R:重建高通滤波器
* _* V) F6 |; Y7 [' Z                                   . @% N! [  V2 o$ _2 d' a' {1 \0 ]
[swa,swd] = swt(signal,level,Lo_D,Hi_D);%swa小波概貌7 p" n4 b" Q$ x* L$ J: l, g) ?! L# s
                                        %swd小波系数/ K& _: I# ^+ g9 [! ]+ `: R
/ q; ]; K- p3 O; t6 N9 M0 y& J
figure;%figure1/ a4 m, m- z3 ~7 X1 J
subplot(level,1,1); plot(real(signal)); grid on;axis tight;
, F, }( K& b. e% Sfor i=1:level$ B1 f7 T  b( r6 H2 y4 g% `
    subplot(level+1,2,2*(i)+1);
3 V  v) {' n! u7 \4 Q5 i    plot(swa(i,:)); axis tight;grid on;xlabel('time');
2 K/ Y! e0 N; ^" U    ylabel(strcat('a   ',num2str(i)));
' [" N& z  X4 F; T( {  T+ d    subplot(level+1,2,2*(i)+2);7 i# l( T7 `* N2 f, j9 ]+ O! j9 [; p' T) J
    plot(swd(i,:)); axis tight;grid on;* p: j+ \" w8 W9 j. i1 |% Q# F9 x, Z
ylabel(strcat('d   ',num2str(i)));
7 f7 R: p; u3 b0 Jend& R; M! V8 \6 d! n  {( D/ ^
%以上内容是对信号进行离散小波变换。
, a4 a# |0 w+ A" y; x7 S%尺度为5
' F! P* E  X9 A# E) Z# p$ _, e, R) r7 O
! P/ M% g, {7 u$ ^! Y/ {6 D+ W

" R' h3 w0 S4 S%____求小波变换的模极大值及其位置,并按级给出小波变换模极大的波形:
- b" S6 p' A6 {% N6 K. t4 l: z% swa:小波概貌;  swd:小波细节;
* B2 d$ j7 m2 @6 c" Z- y( I& C% ddw:局部极大位置; wpeak:小波变换的局部极大序列。
9 X' \7 C0 e' d/ v' kddw=zeros(size(swd));%建立与swd维数相同的矩阵,矩阵值都为零0 |$ l6 K, s8 }+ @' _; |
pddw=ddw;
0 j! {$ W. _% N; inddw=ddw;
0 n; V  q! v) L& _) nposw=swd.*(swd>0);%.*数组乘法,将swd中小于零的数置零
, Y; N" \7 u9 d1 J1 j4 dpdw=((posw(:,1:points-1)-posw(:,2:points))<0);0 |+ s. H. X0 D4 A0 `) r5 m$ q  j
pddw(:,2:points-1)=((pdw(:,1:points-2)-pdw(:,2:points-1))>0);& Y. C9 U9 M/ Z- K* c* y
negw=swd.*(swd<0);%将swd中大于零的数置零
6 p' q  z& W# W% I1 S4 y  bndw=((negw(:,1:points-1)-negw(:,2:points))>0);- D2 `- [8 u: {: z2 b+ A
nddw(:,2:points-1)=((ndw(:,1:points-2)-ndw(:,2:points-1))>0);/ P0 T: W% S6 |) u
ddw=pddw|nddw;%|:或- @) r5 T$ g4 \. ~4 o% n) A( W
ddw(:,1)=1;
# S3 B: f! u$ O3 n9 U9 ?ddw(:,points)=1;& X7 s  H+ [) B! ]
wpeak=ddw.*swd;
& V; m1 {7 X2 Mwpeak(:,1)=wpeak(:,1)+1e-10;%第一列的值加上1e-10,不知道出于什么目的,目前看来不会对结果产生影响
+ a& P0 y; j  c8 t% z/ x4 |/ Bwpeak(:,points)=wpeak(:,points)+1e-10;%同理,将最后一列的值加上1e-10,不知道出于什么目的,目前看来同样不会对结果产生影响0 X, T+ n, A) b
%以上内容为:寻找每级尺度上小波变换系数对应的模极大值点. ~0 u) j9 n6 ]0 s
% i+ E% W8 `* X/ e$ N
wpeak_threshold=wpeak(level,:)/max(abs(wpeak(level,:)));
* G( B( R! b, v. c  o; Xthreshold=0.1;  %  阈值 9 R' C% n, o! t1 t) @
0 L5 j7 k( w9 y  E0 p
for i=1:points;
6 x" q: `" k0 a, F1 @   if (abs(wpeak_threshold(i))<threshold)6 E' H7 E' O5 \5 Q
        wpeak(level,i)=0;
1 a. H2 v9 p6 \1 c( W    end, \1 v! Z$ ]9 o
end; 7 }& p+ ^1 B" q1 X3 [
D5_wpeak=wpeak(level,:);
8 B- i- |; T4 D# C2 m2 r) S
- W7 k  b9 v* T, X+ A0 X%对最大尺度2.^J上的极大值点设定阈值T0,将低于阈值T0的模极大值点去掉,
7 H- \- X% U1 U) \4 {  n+ J
" _' }- I( c) O. v. ~% k
& F2 d4 K; R  b& {: {5 v3 C%____进行模极大值的处理:
% p$ Q3 H" q3 [% K! T- _& l* U# Q2 [%%C=0.8;
+ g' f7 B- a: O3 S- }$ r2 ^%此参数需要调节,为了在最大尺度上设定合适阈值,以确定最大尺度上该保留的模极大值点。8 @1 O9 m8 A+ h2 n6 t
%%D5_wpeak=wpeak(level,:);
& H8 s0 Q+ C7 A  C& [- j& o- a%%M=max(abs(D5_wpeak));$ O! G' H6 ]4 Z5 W) y
%%Thr=C*M/level; %阈值计算,可参考论文:"3mm波段脉冲雷达系统研究和小波去噪分析"。0 W: @8 S" J4 [, \* A
%%for i=1:points. P: t9 m0 M) o- r
%%    if(abs(D5_wpeak(i))<Thr); U+ O# a* D' n2 C9 y! F7 F
%%        wpeak(level,i)=0;
" [- E( v' H0 h' O& f%%    end
+ j) _% y3 u# _+ M- a%%end; z) x3 b8 y6 G0 @4 G
%%D5_wpeak=wpeak(level,:);% ^8 B8 t- o$ J) h) Z+ j% \% V

' s' v) S# h# I: Qfigure;%figure2
( Z+ Y9 b1 a1 A& [* H$ F: X& qsubplot(level+1,1,1); plot(real(signal)); grid on;axis tight;
5 z, G- R7 H" R4 [% ^- x1 o& ifor i=1:level
% g; w' x9 n4 S3 ?0 v. v; H6 Y    subplot(level+1,1,i+1);
  M8 _0 S) S4 ?: t: X; p    plot(wpeak(i,:)); axis tight;grid on;4 O: H$ U, `# E4 N  e# R
ylabel(strcat('j=   ',num2str(i)));  \- y0 j4 q8 x* `
end* I& s% i. }- [& \

- l0 ~: E' X: p8 n- v8 f* s" l9 ?- R( y# E/ N: |+ l8 [3 I% {
%步骤4  S. |- L8 Q3 M
%模极大值的处理方式:
$ j7 B* J3 F/ E- ~%在尺度j上极大值点位置,构造一个搜索区域,( \& y8 ?0 Z/ R% o& r7 F
%在尺度j-1中,极大值点落在该区域的点保留,其他的置0;' F4 Y3 B: M: _4 J
D4_wpeak=wpeak(level-1,:);6 V/ `  |$ i# L: U0 q$ e: ~- F
sousu=6;
7 x0 Z; E1 K  l1 l! eD5_p=(D5_wpeak~=0);4 K; p: [% W. Y% r! o
O_d5=sousu;%该参数确定在上一级搜索极大值的范围,可以调整。4 s! E% o) N# j3 P( t
for P_d5=O_d5:(length(D5_wpeak)-O_d5);
; |. [3 Y7 S  Y0 W    if D5_p(P_d5)==1;
" N3 i2 d$ Q$ K' e9 O        for i=1:O_d5-1;
6 r' p% _6 v  Q: T5 B. [- {6 ?        D5_p(P_d5-i)=1;  5 W4 H7 p1 I8 U% F, h' }6 p# P
        end ;6 d- ~: q6 |  {/ E! [
    end;     . X5 T4 @' {! N3 d% G* L* f
end;  }) X+ A9 o8 Z; [3 `5 t5 t6 V$ B
D4_wpeak=D4_wpeak.*D5_p;
5 R* K8 O5 c3 B5 \4 E+ e; \
! y* a- e2 q* p3 lD3_wpeak=wpeak(level-2,:);
. @+ M2 x! K* `; [  J( hD4_p=(D4_wpeak~=0);
* G3 B1 ^# A2 tO_d4=sousu;%该参数确定在上一级搜索极大值的范围,可以调整。
5 O* r) V) X* \# Y7 u2 Sfor P_d4=O_d4:(length(D4_wpeak)-O_d4);8 E1 x' a$ Q( m5 E
    if D4_p(P_d4)==1;
0 a" u7 m# v( i0 K6 [5 p9 P        for i=1:O_d4-1;
* r  C3 D8 [2 ]        D4_p(P_d4-i)=1;  
% V% B: d! M; a& X! D        end ;0 e) n$ C* C$ A# R8 Z* \5 \
    end;     
, Q% o$ q* y1 X/ z" `end;8 g& ]- A5 F, B2 W
D3_wpeak=D3_wpeak.*D4_p;
# A& L  W7 z* l2 y9 |1 n6 i3 o0 o* I6 X, r$ M
D2_wpeak=wpeak(level-3,:);2 V/ ~' Y5 x0 h/ m/ V6 I: ?& s
D3_p=(D3_wpeak~=0);
4 p# o8 S7 P$ G4 aO_d3=sousu;%该参数确定在上一级搜索极大值的范围,可以调整。
" z* ~; c; }# M$ xfor P_d3=O_d3:(length(D3_wpeak)-O_d3);
3 q4 i6 q  ?2 p$ `, Y  G7 K    if D3_p(P_d3)==1; ! M0 L) H; {1 T( j9 L
        for i=1:O_d3-1;
1 I, j  R( q% N( m; d3 i$ @/ r        D3_p(P_d3-i)=1;; i8 J+ [0 Y: t  V. u, i
        end ;6 [, J4 O; ^- y, |' }
    end;     
9 E0 Z3 ~8 g5 z7 u  i- k$ i2 Jend;: ?# J/ S2 p8 ~  S- X2 E
D2_wpeak=D2_wpeak.*D3_p;0 p1 `) E$ m; e9 R9 }/ n* y/ m6 h
) A2 q5 E! r  L0 O. C
%第一层单独处理,在第二层极大值点位置上,保留第一层相应极大值点:0 j3 p9 O( ]& E- `  C3 i6 ]
D1_wpeak=wpeak(level-4,:);
; r) M- N& h9 O+ FD2_p=(D2_wpeak~=0);3 G: b) A1 |0 |' S
D1_wpeak=D1_wpeak.*D2_p;. Y: F5 F- k2 l9 B( x2 X8 N
# U; C* b3 C  `- G- ^
wpeak=[D1_wpeak' D2_wpeak' D3_wpeak' D4_wpeak' D5_wpeak'];: J- g7 K$ p4 e2 b0 W9 [* `
wpeak=wpeak';
! O0 U; ^8 X' p
: ~/ }! u  [% N1 X, c, k0 B%____重构信号:
9 [9 X0 U0 i0 I6 Ipswa=swa(level,:); % pswa: 为待重建的信号
* T9 X$ ^( A7 l1 Gwframe=(wpeak~=0); %迭代初始化
3 \6 p: C7 i& Qw0=zeros(1,points);
3 f: ~4 }; `9 }1 _" j4 N' S3 J- [[a,d]=swt(w0,level,Lo_D,Hi_D);
, `$ i$ K& ~& w4 I% a7 J- lw2=d;  % w2为待重建小波, t8 C' W" f' `
    for j=1:num_inter
: m- D* p2 A. _0 D+ {       w2=Py_Pgama(d,wpeak,wframe,1,sr);   % 先进行Py投影和 Pgama投影
/ F5 j% z3 j8 c( q       w0=iswt(pswa,w2,Lo_R,Hi_R);         % 再进行Pv投影5 A  [& g" H; s1 |$ g  c9 B
       [a,d]=swt(w0,level,Lo_D,Hi_D);      % Pv
3 `9 w1 n& E5 i    end* ^7 }4 y- c3 k# q" e& J
     pswa=iswt(swa(level,:),w2,Lo_R,Hi_R); % 计算重建信号   * r: Y- Z6 O: P3 ?/ I& D7 ^
     
6 z0 E" M/ _, _9 N, {# c( \6 Zxcrr=y'-pswa; % 重建误差
2 a) {- C# U, D* v; L% mfigure;%figure3+ A$ M9 F0 U& v- U9 {* P1 ]5 H
subplot(411)
" p9 z; Q# [1 ?% y" Hplot(y(1:points),'r');: t$ x, r3 i: O/ N) x, [2 \" z( ]
axis tight;% n4 f* f' `& m
subplot(412)
# V" m& x3 X5 Aplot(signal(1:points),'r');
# L5 _, h, N; Iaxis tight;: l) j6 ?4 N/ _# S/ {3 s: t) D
subplot(413)* L: Z  q. y# A& m+ S
plot(pswa(1:points)); 1 K3 p( q1 R8 p) s) e
axis tight;
7 S) W' b, w" l5 w3 C# hsubplot(414)9 K1 `  a  j2 l6 \5 y( w( V
plot(xcrr(1:points)); / q: `( O& P+ u0 g. q! j% X2 c
axis tight;
4 y. e" V  z$ \6 c2 Y, p0 F/ Cfigure%figure4) ?6 t$ b2 Y; T* s* g& ^; w
subplot(611)' s8 N9 E. {3 G& m6 h8 V; O" O
plot(signal);# ]5 f, I! Z5 J3 o) @1 b2 `
subplot(612)# k% {7 ~( L5 o! q: Y
plot(D5_wpeak);
, `2 a& _/ y4 |7 H% ~/ Csubplot(613); m% B) u4 ^9 V$ h) d7 c& x5 ~
plot(D4_wpeak);( S+ S3 K& q! ]+ J
subplot(614)
2 @& [6 r, s7 \3 kplot(D3_wpeak);
  V3 ~6 ], f: a+ |# |: rsubplot(615)' T2 [, x7 R1 R7 a1 I. i
plot(D2_wpeak);
5 _1 i! H9 J9 T* T1 ^# i) G$ psubplot(616)
, F' q, Q1 z$ @8 Splot(D1_wpeak);
* E& B: B  E: @7 s% k, x- p[value,index]=max(abs(D2_wpeak))
/ g8 |% h7 l' O& h# y4 d[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 2 D2 z5 n- l8 J. W/ y5 N; W9 O  d
    . {) U$ X/ M( J$ t3 q" h% m5 K$ G

    0 K9 \& N) V: D    我也来请教~·
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

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

    该用户从未签到

    尚未签到

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

    本版积分规则

    招聘斑竹

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

    GMT+8, 2026-10-30 09:06

    Powered by Discuz! X3.5 Licensed

    © 2001-2026 Discuz! Team.

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