一维信号的低频与高频成分的小波多维分解与重构实例-附Matlab源代码


👨‍🎓 博主简介:博士研究生

🔬 超级学长:超级学长@实验室(提供各种程序开发、实验复现与论文指导)

📧 个人邮箱:easy_optics@126.com

💬 个人微信:easy_optics

🐧 个人企鹅:754357517



摘要

本博文深入解析了一维小波变换中的单层分解函数dwt以及多层分解函数wavedec的使用方法,并通过sumsin数据集的实例,详细展示了小波分解与信号重构的过程。此外,博文还附带了完整的Matlab源代码供读者参考与实践。

一、参数说明

MATLAB实现一维信号分解和重构的命令主要有 dwt(idwt)和 wavedec(waverec),其中,进行一层小波分解的命令为 dwt,对应的小波重构命令为 idwt;进行多层分解的命令为wavedec,对应的重构命令为 waverec。具体命令如下:

1.1 一层小波分解与重构

[ C A , C D ] = d w t ( X , ′ w n a m e ′ ) [CA,CD]=dwt(X,'wname') [CA,CD]=dwt(X,wname),

其中,dwt 表示离散小波变换;X 为输入参数,是一维信号;'wname’是小波名字;输出变量 CA为低频分解信息,刻画原始信号的逼近信息;CD 为高频分解信息,刻画原始信号的细节。

[ C A , C D ] = d w t ( X , L o _ D , H i _ D ) [ CA, CD] = dwt ( X, Lo\_ D, Hi\_ D) [CA,CD]=dwt(X,Lo_D,Hi_D) ;

为另一种离散小波变换,输人参数为分解的低通滤波器和高通滤波器。

[ C A , C D ] = \begin{bmatrix}{\mathrm{CA}},{\mathrm{CD}}\end{bmatrix}= [CA,CD]=dwt ( X , L o _ D , H i _ D (X,Lo\_D,Hi\_D (XLo_D,Hi_D, ‘mode’,MODE);

为不同形式边界延拓的离散小波变换,MODE 表示不同的延拓方式,具体有对称延拓’sym’ 或者 ′ ^{\prime} symh’(半点对称),‘symw’(全点对称),反对称延拓’asym’或者’asymh’(半点反对称), ′ ^{\prime} asymw’(全点反对称),零延拓’zpd’,一阶光滑延拓’spd’或者’spl’(边界保持导数一致进行延拓),常数延拓’sp0’,周期延拓’ppd’或者’per’。

对应的小波重构实现:

X = X= X=idwt(CA, CD,‘wname’);

X = X= X=idwt(CA,CD,Lo_D,Hi_D);

X = X= X=idwt(CA,CD,Lo_D,Hi_D,‘mode’,MODE);

1.2 多层小波分解与重构

[ C , L ] = [C,L]= [CL]=wavedec ( X , N , ′ w n a m e ′ ) ; (X,N,'wname'); (XNwname)

其中,wavedec 为多层小波分解函数;X 为输人参数,是一维信号;N 为分解层数; l ^{\mathrm{l}} lwname ! ^! !是小波名字;输出变量 C 为所有分解信息的组合,依次为:最后一层的低频信息,最后一层的高频信息, 其余高频信息按照从高层到低层的顺序存放,具体为C= ⌊ A ( N ) ∣ D ( N ) ∣ D ( N − 1 ) ∣ ⋯ ∣ D ( 1 ) ⌋ \lfloor A(N)\mid D(N)\mid D(N-1)\mid\cdots\mid D(1)\rfloor A(N)D(N)D(N1)D(1)⌋

[ C , L ] = [C,L]= [C,L]=wavedec ( X , N , L o _ D , H i _ D ) ; (X,N,Lo\_D,Hi\_D); (XNLo_DHi_D)

为另一种离散小波变换,输入参数 N 为分解层数,Lo_D 和 Hi_D 分别为分解的低通滤波器和高通滤波器。

对应的小波多层重构为:

X = X= X=waverec(C, L, N, ‘wname’);

X = X= X=waverec ( C , L , N , (C,L,N, (CLNLo_D,Hi_D);

1.3 多层小波分解后逼近结果和高通细节的提取

A = A= A=appcoef ( C , L , ′ (C,L, ^{\prime} (CLwname ′ , N ) ; ^{\prime},N); N)D=detcoef ( C , L , ′ (C,L,^{\prime} (CLwname ′ ) ; ^{\prime}); )

其中,appcoef 为多层分解的系数;C,L 为计算提取一维信号的第 N 层的逼近结果;detcoef 为提取的对应的高频细节;层数 N 应该满足 0<=N<= length(L)-2。

省略最后一个参数时,appcoef 提取的是最后一层的通近系数,detcoef 为提取的最后一层的高频细节。

可用滤波器代替’wname’,即 A=appcoef (C,L,Lo_R,Hi_R)或者 A=appcoef (C,L, Lo_R,Hi_R,N),D=detcoef(C,L,Lo_R,Hi_R)或者D=detcoef(C,L,Lo_R,Hi_R,N),此时 Lo_R 和 Hi_R 分别是重构的低通和高通滤波器。

二、实例演示

用 MATLAB 命令 dwt 对一维信号 sumsin 进行分解重构,得到分解的低频和高频信号如图1所示。

在这里插入图片描述

图1 sumsin 信号一层分解后的低频和高频信号

用 wavedec 命令、detcoef 命令和 appcoef 命令得到分解的各个层次的低频和高频信号如图2所示。

在这里插入图片描述

图2 sumsin信号分解三层对应的低频和高频信号

用 idwt 对分解信号进行重构,并将重构信号与原始信号做差比较其差距,结果显示相差很小,为精确重构,如图3所示。

在这里插入图片描述

图3 分解一层的重构信号及误差

用 waverec 命令进行多层信号重构和效果对比,如图4所示。可以看出,只由高层低通信号重构的结果为信号的概貌,而细节信息可由各层次的高通信息进行重构,从而实现信号的分层次分解和重构。

在这里插入图片描述

图4 由不同层次重构信号结果

三、示例Matlab程序获取

一维信号的低频与高频成分的小波多维分解与重构实例-附Matlab源代码

结论


博主简介:擅长智能优化算法信号处理图像处理机器视觉深度学习神经网络等领域Matlab仿真以及实验数据分析等,matlab代码问题、商业合作、课题选题与科研指导等均可私信交流


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值