基于DSP的长序列小波分析快速算法的实现

2017-05-15 01:32施永豪刘聪
都市家教·上半月 2017年4期
关键词:C语言

施永豪+刘聪

【摘 要】小波分析可以对非平稳信号进行多种类型的分辨率采样分析。为能够进行实时处理,本文以SEED-DEC6713V2.1开发板为硬件平台,用C语言编程实现长序列小波分析的快速分解与重构算法,在CCS3.3仿真环境下实现了某一非平稳信号的小波分析。仿真结果表明C6713芯片配合本文的软件能够很好的完成信号实时处理任务。

【关键词】DSP;小波分析快速算法;C语言

傅立叶变换在频域表现出良好的特性,而在时域无任何定位信息,主要应用是针对平稳信号。而在实际应用中存在大量非平稳信号需要我们分析处理,需要考察时域和频域的对应关系,对此,傅立叶分析就无能为力。小波变换以其良好的时域和频域分析性能,可以实现对分析对象的任意细节分析,被誉为“数学显微镜”。由于小波变换算法的复杂度较大,如果直接计算小波变换,现阶段微处理器芯片运算速度实现实时处理有一定难度。为优化计算流程,出现多种小波变换的快速算法,提高了其应用的可行性,本文是基于某种长序列小波变换快速算法[2]的实现与仿真。

一、小波分析基本原理

小波分析是一种自适应时频分析法,小波分析能同时实现时频两域的信号分析,在计算机上采用多分辨率分析的小波快速算法,使得小波分析有效性得以提高。小波快速算法包括分解和重构两个过程。分解算法实现原始信号的低频和高频分离,之后将得到的低频成分进一步分解为低频信号和高频信号,以此逐步进行,实现原始信号的多层次分解[1],分解公式表述如下:

c是低频成分,d是高频成分,h和g分别为低通滤波器系数和高通滤波器系数。

小波重构是将分解得到的各级低频和高频成分加权叠加重构为上级的低频信号成分,进而可以提高非平稳信号的精度,从而减少重构信号与原始信号误差。快速重构依据下述公式进行:

(2)

小波快速算法为我们采用计算机软件编程提供了理论依据。本文以合众达SEED-DEC6713 V2.1开发板为硬件平台,用C语言编程来实现长序列的小波变换的快速分解与重构。

二、非平稳信号小波分析的DSP仿真

SEED-DEC6713V2.1开发板以TI公司的TMS320C6713芯片为核心,DSP处理器的特殊硬件结构及特有的运算周期适合实现小波分析的快速算法。为使分析与重构算法的有效性和可靠性得以保证,本文在CCS3.3环境下对算法进行仿真,仿真过程中主要建立了以下數据处理单元:仿真文件建立单元、DSP初始化单元、映射存储器配置单元[3][4]和快速分解和重构单元。其总的软件流程图如图1所示。

快速分解和重构数据处理单元肩负着实现小波快速分解和重构的重任,是软件核心。在此特给出快速分解数据单元的C语言程序伪代码:

For(L_ID=1; L_ID<=L_Nuber; L_ID++)

{采样数据边界延拓单元; p_Tp=pSr-B+1;

//*应用重叠保留法得到展宽数据和滤波器单元的卷积

for(j=1;j<=S_N;j++)

{ 数据送到计算区处理程序;

卷积计算程序;

计算结果存储到目的区程序;

p_Tp= P_Tp -B+1;

//指针指向下一分段数据的始点}

ScL=(ScL+B-1)/2;

//下层待分解数据源长度

图2 原始信号 图3小波分解的低频分量

图4 第二层高频分量 图5 第一层高频分量

/*为下级分解做准备

p_Tp2=p_Sc; p_Sc=p_D;

p_D=p_Tp2; //更换指针

p_Sc_E=p_Sc+SrcL+B-1;

}

快速重构处理程序的实现。首先要对进行重构的低频和高频信息进行上采样,将得到的数据存到新的数据缓冲区,其伪代码表述为:

p_Tp2=p_D;

//指针指向数据处理去,作为起点

for(i=0; i

{

*( p_Tp2++)=0; //奇数补0值

*( p_Tp2++)=*(p_Sc+i);}

* p_Tp2)=0; //最后一位多补一个0

交换数据指针,将计算结果存放新的数据区,将上采样得到的数据边界展宽,采用重叠保留法计算展宽之后数据与重构滤波器单元的卷积,实现过程与分解过程进本一致。区别在于,存储数据时,每层重构的第一个单元前面去掉的个数多一个数据点,该过程的C语言伪代码如下:

if(k==1) //i为分段标记

S_aB_e=(B-1+T_r)*2;

/首个单元需多去掉一些数据

else

S_aB_e =(B-1)*2;

//其他数据单元去掉的数据数

for(n= S_aB_e;n

{ …… }

将采集的非稳态数据信号导入到CCS3.3中,调入到仿真程序中,采用十六进制Q15定点格式显示仿真结果,如图2-图5所示。本文对采集的非稳态信号进行二重分解,图2是采集的原始信号,图3-图5依次为分解得到的低频分量,第二层高频分量和第一层高频分量。分解后的低频分量包含原信号的基本特征,高频分量包含原信号在传播过程中所受干扰引起的突变。因此,依据高频信号分量的特点,能判断出干扰信号出现的时刻、频率及原始信号发生畸变的时刻和频率。

三、结论

本文以合众达SEED-DEC6713V2.1开发板为硬件平台,编程实现了长序列信号的小波快速分解和重构,并对算法进行了验证。通过对采集非稳态信号的实测,验证了小波快速算法在DSP上实现的有效性和可靠性。结果表明,小波快速分解和重构算法在DSP器件中的实现具有较高的实际应用价值。

参考文献:

[1]程正兴.小波分析算法及应用[M].西安:西安交通大学出版社,1998.

[2]吕新华.一种长序列小波变换的快速实现方法[J].数据采集与处理,2006,21(1):86-89.

[3] TMS320C6713, TMS320C6713B FLOATING-POINT

DIGITAL SIGNAL PROCESSORS SPRS186I DECEMBER 2001 REVISED MAY 2004

[4]何正友.小波分析讲稿.成都:西南交通大学,2010.

[5]于德介,成琼,程军圣.基于复解析小波变换的瞬时频率分析方法[J]. 振动与冲击, 2004, 23(1): 108-110.

猜你喜欢
C语言
基于Visual Studio Code的C语言程序设计实践教学探索
基于C语言的计算机软件编程
C语言程序设计课程教学与学科专业相结合的探索
高职高专院校C语言程序设计教学改革探索
论子函数在C语言数据格式输出中的应用
非计算机专业C语言教学探讨