kevin19821 发表于 2007-12-23 09:38

小波脊算法程序

给大家发个脊算法的程序看看
clear
clc
%%%%测试信号一%%%%%
f1=0.80;f2=0.60;f3=0.50;f4=1.55;
a1=0.50;a2=0.40;a3=0.50;a4=1.60;
zn1=-0.13;zn2=-0.14;zn3=-0.080;zn4=-0.078;
ts=1/100;
t=0:ts:10;

t1end=3;
t1=0:ts:t1end;
sc1=a1.*exp(zn1.*t1).*cos(2.*pi.*f1.*t1);
% plot(sc1)
t2end=10;
t2=t1end:ts:t2end;
xw2=acos((a1.*exp(zn1.*t1end).*cos(2.*pi.*f1.*t1end))./(a2.*exp(zn2.*t1end)))-2.*pi.*f2.*t1end;
sc2=a2.*exp(zn2.*t2).*cos(2.*pi.*f2.*t2-xw2);
% plot(sc2)
t3end=15;
t3=t2end:ts:t3end;
xw3=acos((a2.*exp(zn2.*t2end).*cos(2.*pi.*f2.*t2end-xw2))./(a3.*exp(zn3.*t2end)))-2.*pi.*f3.*t2end;
sc3=a3.*exp(zn3.*t3).*cos(2.*pi.*f3.*t3-xw3);

%t=;
%s1=;
%%%%%%%%%%%%%%%%%%%
%noise=0.05*randn(size(t));
%s=s1+noise;
%信噪比
%Q=10*log(std(s)/std(noise));
u=sc1;
%subplot(211)
%plot(t,u);
%subplot(212)
t=t1;

%小波脊算法
%%%初始化%%%%
aar=zeros((length(u)-1),1);
aa=350;erro=0.001;
aar(1)=aa;
w0=2*pi*centfrq('cmor2-9/pi');
k=2;
%%%%%%%%%%%%%
judge2=1;
while judge2==1
    judge1=1;nn=1;
    while judge1==1&&nn<20
      c=cwt(u,aa,'cmor2-9/pi');
      cc=angle(c);
      aa1=abs(w0/(cc(k)-cc(k-1)));
      %条件1判断
      if abs((aa1-aa)/aa)<erro
            judge1=0;
      else
            aa=aa1;
      end
      nn=nn+1;
    end
    aar(k)=aa1;
    if k<length(u)
      aa=aar(k);
      k=k+1;
    else
      judge2=0;
    end
end
plot(aar);

fudy10 发表于 2007-12-23 10:13

回复 #1 kevin19821 的帖子

你用的是模极值算法吧?有crazy climber算法么?

fudy10 发表于 2007-12-23 16:22

回复 #1 kevin19821 的帖子

你的算法有点问题,结果显示不出来啊???

kevin19821 发表于 2007-12-24 08:48

cwt中的aa定义有问题
页: [1]
查看完整版本: 小波脊算法程序