




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Matlab小波分析工具箱丰富的函数和强大的仿真功能为我们学习小波、用好小波提供了方便、快捷的途径,但是,如果我们要深入掌握小波分析的原理,真正学好、用好小波,就应该尽量用自己编写的程序去实现小波变换和信号分析,尽量在自己的程序中少调用Matlab提供的函数,多用自己的理解去编写相关的小波函数,这样的过程是一个探索、求知的过程,更能让我们体会到小波的强大和学习的乐趣。下面,我把自己编写的小波一维、二维信号分解和重构Matlab程序共享出来,也希望有朋友共享自编的程序,共同学习,提高程序的效率和简洁性。首先要说明的一点是,虽然是自己编写Matlab程序,但并不是说一点也不用Matlab的自带函数。我们要编写的是实现小波变换的主要功能函数,而绘图等基本功能还是要用到Matlab函数的。而且,根据小波变换的滤波器组原理,原始信号要通过低通、高通滤波器处理,这里就涉及到卷积这一运算步骤。卷积FFT算法的实现,相信很多朋友都能用 Matlab、C语言等来实现,不过与Matlab自带的用机器语言编写的FFT程序相比,运算速度一般会慢几倍、几十倍。所以,我的程序里边涉及卷积的就直接调用Matlab的conv()函数了。我们知道,小波变换的一级分解过程是,原始信号分别进行低通、高通滤波,再分别进行二元下抽样,就得到低频、高频(也称为平均、细节)两部分系数;而多级分解则是对上一级分解得到的低频系数再进行小波分解,是一个递归过程。以下是一维小波分解的程序:function cA,cD = mydwt(x,lpd,hpd,dim);% 函数 cA,cD=MYDWT(X,LPD,HPD,DIM) 对输入序列x进行一维离散小波分解,输出分解序列cA,cD% 输入参数:x输入序列;% lpd低通滤波器;% hpd高通滤波器;% dim小波分解级数。% 输出参数:cA平均部分的小波分解系数;% cD细节部分的小波分解系数。cA=x; % 初始化cA,cDcD=;for i=1:dim cvl=conv(cA,lpd); % 低通滤波,为了提高运行速度,调用MATLAB提供的卷积函数conv() dnl=downspl(cvl); % 通过下抽样求出平均部分的分解系数 cvh=conv(cA,hpd); % 高通滤波 dnh=downspl(cvh); % 通过下抽样求出本层分解后的细节部分系数 cA=dnl; % 下抽样后的平均部分系数进入下一层分解 cD=cD,dnh; % 将本层分解所得的细节部分系数存入序列cDendfunction y=downspl(x);% 函数 Y=DOWMSPL(X) 对输入序列进行下抽样,输出序列 Y。% 下抽样是对输入序列取其偶数位,舍弃奇数位。例如 x=x1,x2,x3,x4,x5,则 y=x2,x4.N=length(x); % 读取输入序列长度M=floor(N/2); % 输出序列的长度是输入序列长度的一半(带小数时取整数部分)i=1:M;y(i)=x(2*i); 而重构则是分解的逆过程,对低频系数、高频系数分别进行上抽样和低通、高通滤波处理。要注意重构时同一级的低频、高频系数的个数必须相等。function y = myidwt(cA,cD,lpr,hpr);% 函数 MYIDWT() 对输入的小波分解系数进行逆离散小波变换,重构出信号序列 y% 输入参数:cA 平均部分的小波分解系数;% cD 细节部分的小波分解系数;% lpr、hpr 重构所用的低通、高通滤波器。lca=length(cA); % 求出平均、细节部分分解系数的长度lcd=length(cD);while (lcd)=(lca) % 每一层重构中,cA 和 cD 的长度要相等,故每层重构后, % 若lcd小于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; % 用本层重构的序列更新cA,以进行下一层重构 cD=cD(1:lcd-lca); % 舍弃本层重构用到的细节部分系数,更新cD lca=length(cA); % 求出下一层重构所用的平均、细节部分系数的长度 lcd=length(cD);end % lcd lca,重构完成,结束循环y=cA; % 输出的重构序列 y 等于重构完成后的平均部分系数序列 cAfunction y=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倍再减一for i=1:M % 输出序列的偶数位为0,奇数位按次序等于相应位置的输入序列元素 if mod(i,2) y(i)=x(i+1)/2); else y(i)=0; endend 我们知道,二维小波分解重构可以用一系列的一维小波分解重构来实现。以下程序是基于Haar小波的二维小波分解和重构过程:function LL,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/2 1/2;hpd=-1/2 1/2; % 默认的低通、高通滤波器row,col=size(x); % 读取输入矩阵的大小for j=1:row % 首先对输入矩阵的每一行序列进行一维离散小波分解 tmp1=x(j,:); ca1,cd1=mydwt(tmp1,lpd,hpd,1); x(j,:)=ca1,cd1; % 将分解系数序列再存入矩阵x中,得到L|Hendfor k=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/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的右下角部分function y=myidwt2(LL,HL,LH,HH);% 函数 MYIDWT2() 对输入的子矩阵序列进行逆小波变换,重构出矩阵 y% 输入参数:LL,HL,LH,HH 是四个大小均为 r*c 维的矩阵% 输出参数:y 是一个大小为 2r*2c 维的矩阵lpr=1 1;hpr=1 -1; % 默认的低通、高通滤波器tmp_mat=LL,HL;LH,HH; % 将输入的四个矩阵组合为一个矩阵row,col=size(tmp_mat); % 求出组合矩阵的行列数for k=1:col % 首先对组合矩阵tmp_mat的每一列,分开成上下两半 ca1=tmp_mat(1:row/2,k); % 分开的两部分分别作为平均系数序列ca1、细节系数序列cd1 cd1=tmp_mat(row/2+1:row,k); tmp1=myidwt(ca1,cd1,lpr,hpr); % 重构序列 yt(:,k)=tmp1; % 将重构序列存入待输出矩阵 yt 的相应列,此时 y=L|Hendfor j=1:row % 将输出矩阵 y 的每一行,分开成左右两半 ca2=yt(j,1:col/2); % 分开的两部分分别作为平均系数序列ca2、细节
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 解析卷沪科版9年级下册期末测试卷附参考答案详解(研优卷)
- 2025年教师招聘之《小学教师招聘》通关练习试题及答案详解【真题汇编】
- 2025呼伦贝尔农垦那吉屯农牧场招聘笔试模拟(含答案详解)
- 道路交通安全法题库及答案解析
- 2025年公务员公开遴选笔试试题及答案(B类)
- 2025年《公共基础知识》试真题库及答案
- 乐至县至弘发展集团有限公司2025年度员工招聘调整部分岗位笔试备考及答案详解(夺冠系列)
- 宪法知识竞赛小学组试题及答案
- 响水辅警考试题库2025(有答案)
- 教师招聘之《小学教师招聘》从业资格考试真题附完整答案详解【各地真题】
- 《基础写作教程》 课件全套 第1-11章 基础写作概论- 理论文体
- 失能老人健康知识讲座
- 小针刀治疗的应急预案
- 业务外包作业人员培训管理办法
- 中央企业合规管理办法
- 物理化学实验B智慧树知到课后章节答案2023年下北京科技大学
- 1-丁烯安全技术说明书MSDS
- 技术类《核电站通用机械设备》第1部分(阀门)
- 现场签证单模板
- 风机盘管更换施工方案
- Analyst软件应用培训教程
评论
0/150
提交评论