mallat算法分析及c语言实现,一种基于Mallat算法提高小波包分解速度的方法与流程...

96e12d7b2568c558826a1c3029b84cff.gif

本发明涉及信号处理技术领域,具体涉及一种在mallat算法的基础上利用半小波包和改进卷积过程算法提高小波包分解速度的方法。

背景技术:

随着信息技术的发展,探索人体生理问题的研究深入,研究脑电信号,并且处理脑电信号反应人的生理信息显得尤为重要。脑电信号是脑神经细胞电生理活动在大脑皮层或头皮表面的总体反映。其中脑电信号中包含了大量的生理与疾病的信息。在这个高速发展的社会,通过对脑电波的分析进而分析个人的心理情绪,用于舒缓紧张,焦躁的情绪。由于现在设备的进步,采集到数据是一个非常庞大的数据。1989年mallat在小波变换多分辨分析理论与图像处理的应用研究中受到burt与a的朗诵塔式算法的启发,提出信号的塔式多分辨率分解与重构算法。

目前在针对脑电信号特征提取算法中,常用的是小波包分解和小波分解。“小波包分解”法会把信号的高频和低频完全分解。但在此过程中,无关的信号频率也会被分解,算法复杂度被迫提升。故又引入了只对低频信号分解的“小波分解”方法。但此时又出现了新的问题,那就是如果假设信号中包含高频信号,则经小波分解后,得到的信号会以丢失高频信息为代价,换取算法在复杂度上的优势,这显然不是处理人员所希望的。

本专利主要是实现实时分析情绪分类,利用从脑电信号中提取四种脑电节律波形即delta波(0.78~3.91hz)、theta波(3.91~7.81hz)、alpha波(7.81~13.28hz)、beta波(13.28~30.47hz)的波形作为特征值对情绪分类进行加速。具体实现时在提出半小波概念及其理论推导的基础上,使用改良mallat算法加半小波实现alpha,beta,delta,theta波形加速,将分解重构四种波形的精度达到小数点后两位,速度提升到传统使用mallat算法时间的3/14。无论是在脑电数据的在线处理的速度方面,还是利用脑电信号进行情感分类在处理效果上都有大幅度的提升。

技术实现要素:

本发明为解决现有脑电信号特征提取过程中,采用小波分解只分解低频信号,对低频信号存在丢失信息的问题,提供一种基于mallat算法提高小波包分解速度的方法。

一种基于mallat算法提高小波包分解速度的方法,该方法可由以下步骤实现:

步骤一、选择小波分解类型和分解层数;

选择deap数据库中的一组脑电数据,采用daubechies小波,对一组脑电波中单个通道频率为7.81~13.28hz的alpha波形进行提取后,进行小波分解,所述小波分解层数选择为9层;

步骤二、计算目标信号频率;

根据香农采样定理和步骤一中确定的小波分解层数,获得平均频率步长值δf,根据目标频率范围确定分解的目标数据范围,并在所述的目标数据范围区间内进行数据分解;获得目标数据所在的信号片段;

步骤三、采用逆推算法,获得全部分解的信号;

采用小波包分解信号,将小波包分解看作一个二叉树,然后给小波包编号,获得半小波包的分解信号,其中奇数为高频信号,偶数为低频信号;

步骤四、重构小波;

根据步骤二计算的目标信号频率对应的二叉树根节点编号,对目标信号频率进行重构,将卷积信号的步长设为2,最终卷积获得有用的目标频率信号。

本发明的有益效果:本发明所述的方法通过利用半小波包和改进卷积过程相结合的算法,既解决了小波分解只分解低频信号的不足,又解决了小波包的冗余分解,从而提高了信号分解的准确度,降低了算法的复杂度,达到了加速小波分解的效果。

1)本发明所述的方法能够克服傅里叶变换无法表达信号在时域局部的性质,并且可以把数据、函数或者算子分割成不同频率的成分,从而再利用分解的方法来研究对应尺度下的成分,从而提高小波包分解效率。

2)本发明所述方法采用daubechies小波算法,选择小波及其分解层数,并且利用香农采样定理,进而可以得出小波包分解后的每一个片段的频率范围。

附图说明

图1为本发明所述的一种基于mallat算法提高小波包分解速度的方法的流程图;

图2为重构信号和源信号对比图,其中,图2a为重构总体图,图2b为重构对比细节图;图中,直线b为源信号波形图,圆圈a为重构波形,两个波形图放在一幅图中显示,重构信号对比源信号基本吻合,最后单独的圆圈a波形是重构信号多出的采样点。经过对比大量的数据和图像,分析得出多出的重构的信号不会影响源信号,可以只用截断法直接把多出的信号截短舍弃,重构信号和源信号就吻合了。

图3为小波包分解图。

图4为半小波包的分解图。

图5为mallat算法示意图。

具体实施方式

具体实施方式一、结合图1至图5说明本实施方式,一种基于mallat算法提高小波包分解速度的方法,该方法由以下步骤实现:

以对脑电信号进行半小波包分解为例,完整的处理过程主要包括以下四个步骤:

步骤一、选择小波分解类型和分解层数。采用daubechies小波进行分解。设滤波器h(ω),有

|h(ω)|2+|h(ω+π)|2=1(2)

其中daubechies小波的滤波器为共轭滤波器,且h(0)=1。式中的n为滤波器的阶数,ω表示信号频率。根据系数有限共轭滤波器,构造得到的滤波器系数列为h0,h1……h2k+1,尺度方程为:

由此得到尺度函数由构造函数得出紧支小波函数ψ(t)为:

接着利用正交多分辨分析、尺度方程以及小波方程的系数,可以得到信号小波变换的正交和逆变换的递推算法,即基于mallat算法的小波分解方法。具体过程为将l2(r)空间上的多分辨率分析记为对于任意整数j,k有如下公式:

约束条件为:

根据空间正交值和分解关系可得,小波包分解的mallat分解算法公式为

由上述公式获得某一分解层数下小波分解产生的低频信号与高频信号;式中,偶数项样本是经过分解后的近似信号,而奇数项样本为分解后的细节信号。为取共轭后的低频滤波器系数和为取共轭后的高频滤波器系数,两者的关系可表示为:

根据公式(7),选择deap数据库中的数据,对一组脑电波的一个通道的alpha波形进行提取。alpha波的频率为7.81~13.28hz,要想小波分解达到alpha波的精度,则需要分解9层。

步骤二、计算有用的信号频率。步骤一种设定的有用频率为7.81~13.28hz。根据香农采样定理和小波分解层数得到每个分解片段的平均步长关系如下:

由此可以得出进行小波包分解后每一个片段的频率范围。由于deap数据集的采样频率f=128hz,分解层数n=9,故计算可得δf=64/512=0.125hz。所得到的频率步长为0.125hz。由于alpha波的起始频率为7.81hz,可以得出alpha波是在分解第九层的第63的分解信号,根据alpha波的终止信号为13.28hz可以得出alpha波的终止信号在分解第九层的第107的分解信号(起始分解信号以1为起始标号,如第九层分解得到的信号为s01,s02,s03…,s512)。根据以上计算可推出,只需要关心s63到s107之间的分解数据即可。

表1是分解信号的频率范围,这是根据香农采样定理和小波分解层数得到每个分解的目标信号频率范围。

表1分解信号的频率范围

步骤三、逆推出需要分解的信号,把小波包分解看成一个完全二叉树。给小波包进行编号。首先被分解的信号的编号为1号。结合图3,这是一个4层的二叉树,对应小波包分解为3层分解(小波包分解的层数不算需要分解的信号)。假设需要9号10号和11号这三个分解信号的频率重构。而这三个波形的上一层的编号为4号和5号。得出4号和5号的就是对9号10号和11号同时向下取整。同理对4号和5号向下取整得到2号,2号向下取整得到1号。

得出半小波包的分解图为图3。为了得到9号10号和11号的分解信号,只需要知道1号,2号,4号,5号的分解信号,至于其他信号不需要考虑。其中奇数为高频信号,偶数为低频信号。

步骤四、重构小波。根据步骤二计算出所需目标频率对应的二叉树根节点的编号,在重构过程中只选择所需频率的节点进行重构,卷积过程中,由于单步卷积之后还需要进行采样,所以为了解决算法复杂度,直接将卷积信号的步长设为2,可以直接得到重构信号。

先对该部分小波信号进行延拓处理以克服数据溢出问题,如图5,分别采用四个低通滤波器系数h0,h1,h2,h3和四个高通滤波器系数g0,g1,g2,g3做卷积。传统的卷积过程通常对小波信号进行补偿为1的卷积,其次在经过隔点抽取,最终得到小波信号的上采样。而本实施方式中选择卷积过程的步长为2,这样不会产生卷积中间值,可经过上采样后直接得出最终的有用信号。

最后经过试验对比发现重构信号比源信号长,究其原因在于对比数据增长的长度跟分解层数和分解最后一层的结果和数据本身的是奇数还是偶数有直接的关系,解决方案为利用截断法把多余的信号截断舍弃,这样并不影响数据的可信度。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值