用MATLAB 进行整数小波分解的程序,最好有程序详细介绍的,谢谢!

用MATLAB 进行整数小波分解的程序,最好有程序详细介绍的,谢谢!,第1张

举个例子,希望有所帮助。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')


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11078440.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存