
a1a2,d2,d1是ca1,ca2,cd1,cd2这些小波系数的重构。ca1,ca2,cd1,cd2是小波系数,它们的数据点数随分解层次的增大而减少,这就难以与原始信号对比分析,通常会经过重构变为与原始信号个数相同的a1a2,d2,d1,从物理意义上讲,只有a1a2,d2,d1才是有实际量纲的信号,ca1,ca2,cd1,cd2是没有量纲和物理意义的。
上面的语句是提取小波系数的,而工具箱的图是用重构的数据的,你可以使用waverec函数实现工具箱的功能。
对于DWT,小波分解对被分解信号的点数是没有要求的,因为在DWT之前对原始信号是要经过拓展的,也就是说,DWT时的信号数据已经不是原始信号的点数了。对于SWT,matlab在这方面所写的函数没下啥功夫,比较敷衍,这时小波分解被分解信号的点数必须是2的整数次幂。
在网上看了一下,同样的问题不少人进行了回答,其中
>
举个例子,希望有所帮助。clc;clearall;closeall;X=rgb2gray(imread('lenajpg'));x=X;x=double(x);line=250;column=250;J=6;Tu=7;smooth_area_num=20;edge_area_num=40;fori=1:linecoef1(i,:)=cwt(x(i,:),1,'bior44');coef2(i,:)=cwt(x(i,:),2,'bior44');coef3(i,:)=cwt(x(i,:),J,'bior44');endmax=0;max_loc=0;max_num=15;fori=1:linej=1;whilej0&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=m;endendifmax>max_numform(i,max_loc)=1;endj=k;max=0;break;endend%forkifk==column-1j=column-1;endelsej=j+1;end%ifend%whileend%对列作小波变换x=x';fori=1:linecoef1(i,:)=cwt(x(i,:),1,'bior44');coef2(i,:)=cwt(x(i,:),2,'bior44');coef3(i,:)=cwt(x(i,:),J,'bior44');end%正值1,负值0的矩阵temp表示(突变点左位置)max=0;max_loc=0;fori=1:linej=1;whilej0&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=m;endendifmax>max_numform(max_loc,i)=1;endj=k;max=0;break;endend%forkifk==column-1j=column-1;endelsej=j+1;end%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)=0;form(i,j+1)=0;endifform(i,j)==1&form(i+1,j)==1&sum(sum(form(i-1:i+2,j-1:j+1)))==2form(i,j)=0;form(i+1,j)=0;endifform(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)=0;form(i+1,j+1)=0;endifsum(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)=0;form(i+1,j+1)=0;endendifform(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)=0;form(i+1,j)=0;endifsum(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)=0;form(i+1,j)=0;endendendendmax=0;fori=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))<=s3form(m,n)=0;endendendendendfigure;imshow(form,[]);
T=wpdec(y,5,'db40');
%对信号y进行小波包分解,层数为5,得到的T为小波树,plot一下就可看到
a10=wprcoef(T,[1,0]);
%a10是对节点[1,0]进行重构后得到的信号。貌似没有对那一层重构这一说法吧,只能是对某层的某个节点进行重构。节点的编号你可以从小波树中看出来
这是我的做法,不过用的是小波包分解。不知对你有没有用
以上就是关于MATLAB里小波工具箱的功能怎样用函数程序实现呢全部的内容,包括:MATLAB里小波工具箱的功能怎样用函数程序实现呢、您好,我在做一个小波相干的matlab程序,遇到一些问题、用MATLAB 进行整数小波分解的程序,最好有程序详细介绍的,谢谢!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)