



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Matlab小波分析工具箱丰富的函数和强大的仿真功能为我们学习小波、用好小波提供了方便、快捷的途径,但是,如果我们要深入掌握小波分析的原理,真正学好、用好小波,就应该尽量用自己编写的程序去实现小波变换和信号分析,尽量在自己的程序中少调用Matlab提供的函数,多用自己的理解去编写相关的小波函数,这样的过程是一个探索、求知的过程,更能让我们体会到小波的强大和学习的乐趣。下面,我把自己编写的小波一维、二维信号分解和重构Matlab程序共享出来,也希望有朋友共享自编的程序,共同学习,提高程序的效率和简洁性。首先要说明的一点是,虽然是自己编写Matlab程序,但并不是说一点也不用Matlab的自带函数
2、。我们要编写的是实现小波变换的主要功能函数,而绘图等基本功能还是要用到Matlab函数的。而且,根据小波变换的滤波器组原理,原始信号要通过低通、高通滤波器处理,这里就涉及到卷积这一运算步骤。卷积FFT算法的实现,相信很多朋友都能用Matlab、C语言等来实现,不过与Matlab自带的用机器语言编写的FFT程序相比,运算速度一般会慢几倍、几十倍。所以,我的程序里边涉及卷积的就直接调用Matlab的conv()函数了。我们知道,小波变换的一级分解过程是,原始信号分别进行低通、高通滤波,再分别进行二元下抽样,就得到低频、高频(也称为平均、细节)两部分系数;而多级分解则是对上一级分解得到的低频系数再进
3、行小波分解,是一个递归过程。以下是一维小波分解的程序:functioncA,cD=mydwt(x,lpd,hpd,dim);%函数cA,cD=MYDWT(X丄PD,HPD,DIM)对输入序列x进行一维离散小波分解,输出分解序列cA,cD%输入参数:x输入序列;%lpd低通滤波器;%hpd高通滤波器;%dim小波分解级数。%输出参数:cA平均部分的小波分解系数;%cD细节部分的小波分解系数。cA=x;%初始化cA,cDcD=;fori=1:dimcvl=conv(cA,lpd);%低通滤波,为了提高运行速度,调用MATLAB提供的卷积函数conv()dnl=downspl(cvl);%通过下抽样
4、求出平均部分的分解系数cvh=conv(cA,hpd);%高通滤波dnh=downspl(cvh);%通过下抽样求出本层分解后的细节部分系数cA=dnl;%下抽样后的平均部分系数进入下一层分解cD=cD,dnh;%将本层分解所得的细节部分系数存入序列cDendfunctiony=downspl(x);%函数Y=DOWMSPL(X)对输入序列进行下抽样,输出序列Y。%下抽样是对输入序列取其偶数位,舍弃奇数位。例如x=x1,x2,x3,x4,x5,则y=x2,x4.N=length(x);%读取输入序列长度M=floor(N/2);%输出序列的长度是输入序列长度的一半(带小数时取整数部分)i=1:
5、M;y(i)=x(2*i);而重构则是分解的逆过程,对低频系数、高频系数分别进行上抽样和低通、高通滤波处理。要注意重构时同一级的低频、高频系数的个数必须相等。functiony=myidwt(cA,cD,lpr,hpr);%函数MYIDWT()对输入的小波分解系数进行逆离散小波变换,重构出信号序列y%输入参数:cA平均部分的小波分解系数;%cD细节部分的小波分解系数;%lpr、hpr重构所用的低通、高通滤波器。lca=length(cA);%求出平均、细节部分分解系数的长度lcd=length(cD);while(lcd)=(lca)%每一层重构中,cA和cD的长度要相等,故每层重构后,%若l
6、cd小于lca,则重构停止,这时的cA即为重构信号序列y。upl=upspl(cA);%对平均部分系数进行上抽样cvl=conv(upl,lpr);%低通卷积cD_up=cD(lcd-lca+1:lcd);%取出本层重构所需的细节部分系数,长度与本层平均部分系数的长度相等uph=upspl(cD_up);cvh=conv(uph,hpr);%对细节部分系数进行上抽样%高通卷积cA=cvl+cvh;cD=cD(1:lcd-lca);lca=length(cA);lcd=length(cD);%用本层重构的序列更新cA,以进行下一层重构%舍弃本层重构用到的细节部分系数,更新cD%求出下一层重构所用
7、的平均、细节部分系数的长度end%lcdlca,重构完成,结束循环y=cA;%输出的重构序列y等于重构完成后的平均部分系数序列cAfunctiony=upspl(x);%函数Y=UPSPL(X)对输入的一维序列x进行上抽样,即对序列x每个元素之间%插零,例如x=x1,x2,x3,x4,上抽样后为y=x1,0,x2,0,x3,0,x4;N=length(x);%读取输入序列长度M=2*N-1;%输出序列的长度是输入序列长度的2倍再减一fori=1:M%输出序列的偶数位为0,奇数位按次序等于相应位置的输入序列元素ifmod(i,2)y(i)=x(i+1)/2);elsey(i)=0;endend我
8、们知道,二维小波分解重构可以用一系列的一维小波分解重构来实现。以下程序是基于Haar小波的二维小波分解和重构过程:functionLL,HL,LH,HH=mydwt2(x);%函数MYDWT2()对输入的r*c维矩阵x进行二维小波分解,输出四个分解系数子矩阵LL,HL,LH,HH%输入参数:x输入矩阵,为r*c维矩阵。%输出参数:LL,HL,LH,HH是分解系数矩阵的四个相等大小的子矩阵,大小均为r/2*c/2维%LL:低频部分分解系数;HL:垂直方向分解系数;%LH:水平方向分解系数;HH:对角线方向分解系数。lpd=1/21/2;hpd=-1/21/2;%默认的低通、高通滤波器row,co
9、l=size(x);%读取输入矩阵的大小forj=1:row%首先对输入矩阵的每一行序列进行一维离散小波分解tmp1=x(j,:);ca1,cd1=mydwt(tmp1,lpd,hpd,1);x(j,:)=ca1,cd1;%将分解系数序列再存入矩阵x中,得到L|Hendfork=1:col%再对输入矩阵的每一列序列进行一维离散小波分解tmp2=x(:,k);ca2,cd2=mydwt(tmp2,lpd,hpd,1);x(:,k)=ca2,cd2;%将分解所得系数存入矩阵x中,得到LL,Hl;LH,HHendLL=x(1:row/2,1:col/2);%LL是矩阵x的左上角部分LH=x(row/
10、2+1:row,1:col/2);%LH是矩阵x的左下角部分HL=x(1:row/2,col/2+1:col);%HL是矩阵x的右上角部分HH=x(row/2+1:row,col/2+1:col);%HH是矩阵x的右下角部分functiony=myidwt2(LL,HL,LH,HH);%函数MYIDWT2()对输入的子矩阵序列进行逆小波变换,重构出矩阵y%输入参数:LL,HL,LH,HH是四个大小均为r*c维的矩阵%输出参数:y是一个大小为2r*2c维的矩阵lpr=11;hpr=1-1;%默认的低通、高通滤波器tmp_mat=LL,HL;LH,HH;%将输入的四个矩阵组合为一个矩阵row,col=size(tmp_mat);%求出组合矩阵的行列数fork=1:col%首先对组合矩阵tmp_mat的每一列,分开成上下两半ca1=tmp_mat(1:row/2,k);%分开的两部分分别作为平均系数序列cal、细节系数序列cd1cd1=tmp_mat(row/2+1:row,k);tmp1=myidwt(ca1,cd1,lpr,hpr);%重构序列yt(:,k)=tmp1;%将重构序列存入待输出矩阵yt的相应列,此时y=L|Hendforj=1:row%将输出矩阵y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 借用林地协议合同范本
- 包装纸盒合同范本
- 北京车辆过户合同范本
- 军事拓展协议合同范本
- 企业价值咨询合同范本
- 动产个人抵押合同范本
- 人工劳务外包合同范本
- 企业绿化合同范本
- 农业机械改装项目合同范例
- 化妆品厂家代工合同范本
- 2024年岳阳职业技术学院单招职业适应性测试题库及答案解析
- 妇产科医疗质控月汇报
- 《石油化工企业场地地下水污染防治技术指南》(T-CAEPI 39-2021)
- 人大代表身份证明
- 部编版语文四年级下册第二单元大单元教学设计核心素养目标
- 城区排水管网雨污分流改造项目可行性报告
- 公务员因私出国规定
- 《幼儿教育评价》课程标准
- 《现代教育技术》课程标准
- 教职工安全教育培训课件
- 2024年山东省春季高考技能考试-汽车专业备考试题库(浓缩500题)
评论
0/150
提交评论