
举个例子,希望有所帮助。clcclearallcloseallX=rgb2gray(imread('lena.jpg'))x=Xx=double(x)line=250column=250J=6Tu=7smooth_area_num=20edge_area_num=40fori=1:linecoef1(i,:)=cwt(x(i,:),1,'bior4.4')coef2(i,:)=cwt(x(i,:),2,'bior4.4')coef3(i,:)=cwt(x(i,:),J,'bior4.4')endmax=0max_loc=0max_num=15fori=1:linej=1whilej0&coef3(i,j+1)0)%找到左位置jfork=j+1:column-1ifcoef3(i,k)*coef3(i,j)>=0%找到右位置kform=j:kifabs(coef3(i,m))>maxmax=abs(coef3(i,m))max_loc=mendendifmax>max_numform(i,max_loc)=1endj=kmax=0breakendend%forkifk==column-1j=column-1endelsej=j+1end%ifend%whileend%对列作小波变换x=x'fori=1:linecoef1(i,:)=cwt(x(i,:),1,'bior4.4')coef2(i,:)=cwt(x(i,:),2,'bior4.4')coef3(i,:)=cwt(x(i,:),J,'bior4.4')end%正值1,负值0的矩阵temp表示(突变点左位置)max=0max_loc=0fori=1:linej=1whilej0&coef3(i,j+1)0)%找到左位置jfork=j+1:column-1ifcoef3(i,k)*coef3(i,j)>=0%找到右位置kform=j:kifabs(coef3(i,m))>maxmax=abs(coef3(i,m))max_loc=mendendifmax>max_numform(max_loc,i)=1endj=kmax=0breakendend%forkifk==column-1j=column-1endelsej=j+1end%ifend%whileendfori=2:line-2forj=2:column-2%链长为1ifform(i,j-1)==0&form(i,j+1)==0&form(i-1,j-1)==0&form(i-1,j)==0&form(i-1,j+1)==0&form(i+1,j-1)==0&form(i+1,j)==0&form(i+1,j+1)==0form(i,j)=0%endifform(i,j)==1&form(i,j+1)==1&sum(sum(form(i-1:i+1,j-1:j+2)))==2form(i,j)=0form(i,j+1)=0endifform(i,j)==1&form(i+1,j)==1&sum(sum(form(i-1:i+2,j-1:j+1)))==2form(i,j)=0form(i+1,j)=0endifform(i,j)==1&form(i+1,j+1)==1&sum(sum(form(i:i+1,j:j+1)))==2ifsum(sum(form(i-1:i+2,j-1:j+2)))==3&(form(i-1,j+2)==1|form(i+2,j-1)==1)form(i,j)=0form(i+1,j+1)=0endifsum(sum(form(i-1:i+2,j-1:j+2)))==4&form(i-1,j+2)==1&form(i+2,j-1)==1form(i,j)=0form(i+1,j+1)=0endendifform(i,j+1)==1&form(i+1,j)==1&sum(sum(form(i:i+1,j:j+1)))==2ifsum(sum(form(i-1:i+2,j-1:j+2)))==3&(form(i-1,j-1)==1|form(i+2,j+2)==1)form(i,j+1)=0form(i+1,j)=0endifsum(sum(form(i-1:i+2,j-1:j+2)))==4&form(i-1,j-1)==1&form(i+2,j+2)==1form(i,j+1)=0form(i+1,j)=0endendendendmax=0fori=3:line-3forj=3:column-3s=sum(sum(form(i-2:i+2,j-2:j+2)))form=i-2:i+2forn=j-2:j+2ifs>=7&abs(coef3(m,n))<=s*3form(m,n)=0endendendendendfigureimshow(form,[])%含噪声的三角波与正弦波的组合
%利用db5小波对信号进行7层分解
%生产正弦信号
clcclose allclear all
N=1000
t=1:N
sig1=sin(0.3*t)
%生成三角形波形
sig2(1:500)=((1:500)-1)/500
sig2(501:N)=(1000-(501:1000))/500
figure(1)
subplot(211)
plot(t,sig1,'linewidth',2)
xlabel('样本序号 N')
ylabel('幅值A')
subplot(212)
plot(t,sig2,'linewidth',2)
xlabel('样本序号 N')
ylabel('幅值A')
%叠加信号
x=sig1+sig2+randn(1,N)
figure(2)
plot(t,x,'linewidth',2)
xlabel('样本序号 N')
ylabel('幅值A')%一维小波分解
[c,l]=wavedec(x,7,'db5')%重构第1-7层逼近系数
a7=wrcoef('a',c,l,'db5',7)
a6=wrcoef('a',c,l,'db5',6)
a5=wrcoef('a',c,l,'db5',5)
a4=wrcoef('a',c,l,'db5',4)
a3=wrcoef('a',c,l,'db5',3)
a2=wrcoef('a',c,l,'db5',2)
a1=wrcoef('a',c,l,'db5',1)%显示逼近系数
figure(3)
subplot(711)
plot(a7,'linewidth',2)
ylabel('a7')
subplot(712)
plot(a6,'linewidth',2)
ylabel('a6')
subplot(713)
plot(a5,'linewidth',2)
ylabel('a5')
subplot(714)
plot(a4,'linewidth',2)
ylabel('a4')
subplot(715)
plot(a3,'linewidth',2)
ylabel('a3')
subplot(716)
plot(a2,'linewidth',2)
ylabel('a2')
subplot(717)
plot(a1,'linewidth',2)
ylabel('a1')
xlabel('样本序号 N')%重构第1-7层细节系数
d7=wrcoef('d',c,l,'db5',7)
d6=wrcoef('d',c,l,'db5',6)
d5=wrcoef('d',c,l,'db5',5)
d4=wrcoef('d',c,l,'db5',4)
d3=wrcoef('d',c,l,'db5',3)
d2=wrcoef('d',c,l,'db5',2)
d1=wrcoef('d',c,l,'db5',1)
%显示细节系数
figure(4)
subplot(711)
plot(d7,'linewidth',2)
ylabel('d7')
subplot(712)
plot(d6,'linewidth',2)
ylabel('d6')
subplot(713)
plot(d5,'linewidth',2)
ylabel('d5')
subplot(714)
plot(d4,'linewidth',2)
ylabel('d4')
subplot(715)
plot(d3,'linewidth',2)
ylabel('d3')
subplot(716)
plot(d2,'linewidth',2)
ylabel('d2')
subplot(717)
plot(d1,'linewidth',2)
ylabel('d1')
xlabel('样本序号 N')
评论列表(0条)