分类筛选
分类筛选:

分析类有关专科开题报告范文 跟具有时频域分析功能的Mallat算法快速实现和应用分析有关自考毕业论文范文

版权:原创标记原创 主题:分析范文 类别:专科论文 2024-01-30

《具有时频域分析功能的Mallat算法快速实现和应用分析》

本文是分析类有关专科开题报告范文与频域和频域分析功能和应用分析类大学毕业论文范文。

吴 琼[

作者简介:吴琼(1989- ),女,黑龙江齐齐哈尔人,学历硕士,职称:助教,单位:广东理工学院,研究方向:控制科学,信息融合,状态估计.]

(广东理工学院 广东肇庆 526100)

摘 要 时频域分析方法能够把非平稳信号在时间域和频率域的局部特征提取出来,具有很好的聚焦性.文章基于多分辨率分析为基础Mallat变换算法实现信号的时频分析功能,并详细叙述了算法的快速实现与实际应用.相关仿真分析验证了算法的有效性.

关键词 时频域;分析功能;Mallat算法

中图分类号:TN911.4文献标识码:C文章编号:2095-1205(2018)02-39-02  

在现代控制理论和实际应用中,采集和处理信号是重要的组成部分.就平稳信号处理而言,传统方案大都以傅里叶变换为基础,其主要原理是:把时域信号分解为具有不同比重、无限长度的正弦函数,进而反映信号的时域和频域的全局特征.但是,对于随时间变化的非平稳信号,我们往往更关注它的局部特征,对此,傅里叶变换则不再适用[1].因此,研究具有局部时频域分析功能的方法,在非平稳信号的处理方面,具有实用意义.本文首先分析Mallat分解算法在时频域分析的应用原理,随后提出了算法的快速实现方案,最后采用MATLAB软件对所提的方案进行应用研究,验证了方案的可行性.

1Mallat分解算法的时频分析原理

1.1Mallat分解算法原理

利用Mallat分解算法可以把信号不断的二分到各个频率尺度,其实质过程类似于对信号不停的进行高通以及低通滤波,分解结束后,可以得到高频的细节分量以及低频的平滑分量,前者表示信号中的信号细节部分,后者为信号的平滑部分.分解示意图如1所示.每次分解得到的低频信号分量将作为下次分解的原始信号,高频信号则不再参与下次分解过程,随着分解过程的进行,数据长度在减半,因此数据在不同频率下的特性也得到显示.以4096 个原始数据为例,Mallat变换将数组不停的进行二分,d代表高频分量的细节系数,a代表低频分量的平滑系数.

图1 Mallat分解变换示意图

1.2时频分析功能

时间和频率是描述信号的两个最重要的物理量,由图1可知,Mallat变换后得到的尺度系数和细节系数,将分布于时间域的离散数据用表示频率域的系数表现出来,因此我们可以用分辨率来分析信号,实现对信号的多尺度分解.这方便我们在信号突变阶段以高分辨率分析信号,在信号平稳阶段以低分辨率观察其总体情况[2].

2算法实现的关键问题

2.1数组运算初始化

本算法在计算过程中涉及到多维数组计算,并且均为动态数组(随输入序列变化).因此,在嵌入式应用中我们需要事先保存一部分存储空间以利于快速计算.在Mallat变换每层分解的系数及分解后的序列也需要及时进行存储,分解后的数组长度sLEN由Mallat变换的滤波器参数长度FLEN及与原始长度dataLEN有关.其关系可由式(1)表示.

sLEN等于(FLEN+dataLEN-1)/2

(1)

2.2Mallat变换函数相关参数的获取

算法需要用到两种滤波器组h(n),l(n),对于Mallat变换滤波器参数可以通过Matlab的wfilters(‘wename’)获取滤波器,编写进入程序中进行存储,在实际计算中即可以实时调用.算法分解层数与低频分量d(n)、高频分量a (n)的频带范围如下式表示:

(2)

其中:i等于1,2,3,…;fs为系统信号实际的采样频率,低频分量d(n)与高频分量a (n)分别对应平滑系数a,高频系数d.

2.3算法输入信号的边界延拓问题

在Mallat算法是离线数据的分解运算,而其原理是对连续信号进行分析的,因此其假设信号的输入序列是无限长的,而实际中输入数据一定是有限长的,因此对于信号边界的处理问题需要进行仔细考量.边界延拓是一种用于处理信号边界的方法,分为:对称延拓、零延拓和周期延拓.本文选用计算速率较快的对称延拓,其表达式如下:

(3)

当原数据长度dataLEN为偶数,经过延拓处理的数据长度为:

(4)

当原数据长度dataLEN为奇数,只需要在其右端再添加一个元素即可.Matlab软件内也是自动嵌入了对称延拓方法.信号成功延拓后,就可以进行Mallat算法的分解计算了.

2.4分解算法的嵌入式实现

将信号分别与mallat变换的高通和低通滤波器进行卷积,并得出相应的分量,就是算法的本质内容.两种分量可以采用同样的程序进行提取,不同之仅在于滤波器的系数数组,这里以一种为例进行说明.其C语言的程序代码如下:

*/sourceData 源数据 */dataLen 源数据长度 */db 过滤器类型 */cA 分解后的近似部分序列-低频部分 */cD 分解后的细节部分序列-高频部分

1.int Welet::Dwt(double *sourceData, int dataLen, Filter db, double *cA, double *cD); 2.if(dataLen < 2) ;3. return-1;4. if((NULL 等于等于 sourceData)||(NULL 等于等于 cA)||(NULL 等于等于 cD); 5.return -1; 6.m_db 等于 db; 7. int filterLen 等于 m_db.length; 8.int n,k,p; 9.int decLen 等于 (dataLen+filterLen-1)/2; 10.double tmp等于0; 11.cout<<"decLen等于"<<decLen<<endl; 12.for(n等于0; n<decLen; n++);13.cA[n] 等于 0; 14. cD[n] 等于 0; 15. for(k等于0; k<filterLen; k++);16.p 等于 2*n-k+1; 17.// 信号边沿对称延拓18.if((p<0)&&(p>等于-filterLen+1)); 19.tmp 等于 sourceData[-p-1]; 20.else if((p>dataLen-1)&&(p<等于dataLen+filterLen-2)); 21.tmp 等于 sourceData[2*dataLen-p-1]; 22. else if((p>等于0)&&(p<dataLen-1)); 23.tmp 等于 sourceData[p]; 24.else 25.tmp 等于 0; 26.cA[n] +等于 m_db.lowFilterDec[k]*tmp;27.cD[n] +等于 m_db.highFilterDec[k]*tmp; 28.return decLen.

3Mallat算法的信号处理效果

下面介绍的是将算法程序写在MATLAB中,然后利用MATLAB程序对输入信号进行处理的效果.如图2所示,原始信号在t0时刻发生突变,由平稳的信号转换为正弦信号,最后在t1时刻发生第二次突变,由正弦信号再次转换为平稳信号.此时利用Mallat分解算法得到的高频细节分量可以明显体现出信号的局部时频特性,很好的区分出了两次突变点的位置.图2中横坐标为数据采样点,纵坐标为信号幅值.

图2 Mallat算法分解结果

实验结果表明:对非平稳信号采用Mallat算法变换后,低频和高频系数很好的反映了信号的细节和整体情况,应用场合更为广泛.

4小结

本文从应用的角度分析了Mallat算法的快速实现以及典型应用,阐明了算法的分解原理以及时频分析功能,列出了嵌入式应用的具体实现方案,并在仿真软件中验证了方案的可行性,利于高效快速的工程应用.

分析论文参考资料:

汇总,此文为一篇关于对不知道怎么写频域和频域分析功能和应用分析论文范文课题研究的大学硕士、分析本科毕业论文分析论文开题报告范文和文献综述及职称论文的作为参考文献资料。

相关免费毕业论文范文

热门有关优秀论文题目选题

和你相关的