快速小波变换在DSP中的实现方法..docx

快速小波变换在DSP中的实现方法..docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
快速小波变换在DSP中的实现方法.

快速小波变换在DSP中的实现方法2008-03-25 09:21姜新华  范征宇(上海交通大学信息与控制工程系 上海,200240)摘要 小波分析是分析非稳定信号的一种非常有效的方法。Mallat快速算法使得小波分析的广泛应用成为现实。在实时信号分析中,离散小波变换在DSP上的有效应用受到了特别的关注。本文简单介绍了FWT,详细阐述了在DSP上FWT的周期性扩展的实现。其中,特别介绍了DSP的循环寻址。最后,给出了针对TI公司的TMS320C3X系列DSP的相应的汇编代码。关键词:小波变换;快速算法;数字信号处理器引言  小波变换是从信号理论领域发展形成的。小波变换涵盖许多领域,它在这些领域得到了(或将得到)广泛的应用。作为信号处理的经典工具,傅里叶变换的缺点是它没有时域局部化性质。它仅仅给出信号的频率成分表达,但一般不能从变换后的信号中得出频率与时域局部有关的信息,其原因就在于分解函数的周期性(三角函数)。这些函数可在频域定位,但在时域则不行。因此,傅立叶变换是表示稳定信号的理想工具。小波变换的分解函数,即所谓的“小波”在时域和频域都具有局部性。因此,小波变换是表示包含不连续或不稳定成分的信号的理想工具。  在实际的信号处理应用中,常采用的是小波变换的离散形式,也即所谓的离散小波变换(DWT)。1988年,Mallat在Burt和Adelson的图像分解和重构的塔形算法启示下,基于多分辨分析框架,给出了信号与图像(或函数)分解为不同频率通道的算法及其重构算法——Mallat算法[1],大大提高了小波变换的计算速度,其重要性相当于傅里叶变换中的FFT算法。从而使小波变换具有了明显的工程应用价值。  通用的微处理器在运算速度上难以适应信号实时处理的要求。DSP处理器就是为了适应这种需求而开发的。DSP处理器中集成有高速的乘法器硬件,能快速地进行大量数据的乘法和加法运算。小波变换和DSP处理器的结合使得小波变换具有很强的可实现性。1 快速小波变换(FWT)  基于多分辨分析的理论,Mallat给出了快速小波变换(FWT)的算法——Mallat算法。对于一个多分辨分析{Vj}j∈Z,φ和ψ分别为相应的尺度函数和小波函数,函数f属于由尺度函数φ生成的MRA的基本子空间V0。它可以表述成[5]  对上述表达式的几点说明如下:  (1)hk是多分辨分析的尺度系数,gk是多分辨分析的小波系数,两者的关系是gn=(-1)nh2k+1-n,k∈Z;  (2)dmn和cmn分别是函数f在第m层尺度上的小波分解系数和尺度逼近系数;  (3)实际应用中,函数f不是连续函数,而是所要分析的信号的离散采样序列fk。当采样率相当高时,信号的采样就非常近似于展开系数c0。  这样,计算离散小波变换可以描述成递归计算式(1)和式(2)两个和式。因此,分析算法有如下形式:输入   c0(输入序列)     M(分解层次)计算   for m=1,....,M 2 有限序列的FWT  以上算法推导时,假定序列是无限的。然而,实际应用时序列总是有限的。为了满足多分辨分析的要求,可以用合适的数来扩展有限序列,常采用的有零插值法和周期性扩展法。  零插值法是将序列支撑以外的元素都设为零。如果序列不是以零开头或结尾,这就在序列的边界处人为地产生了不连续性,从而使得在dm相应位置出现较大的值。另外,零插值法中,输入序列与系数序列的支撑的长度不是相互独立的,这增加了应用时的计算量。  周期性扩展法是把序列当作一个周期信号进行扩展,序列支撑的长度就是周期的长度。周期性扩展克服了零插值法的不足,而且这种周期性能沿着尺度传递。另外,可以利用DSP处理器的循环寻址功能实现序列的周期性扩展,从而更加提高了FWT的计算速度。  因此,本文采用周期性扩展法在DSP处理器上实现FWT。  对式(1,2)变换下标可得 输入序列定义为x(n),尺度展开系数为z(k),而系数为f(l)(包括尺度系数h(l)和小波系数g(l))。  当算法应用于DSPs上时,这些序列的下标必须从0开始。系数序列的下标的范围为:0,…,l-up-per,l-upper表示下标的最大值 如果输入序列x(n)的长度N=2u,u∈Z+,则z(k)的长度沿尺度不断地被二等分;因此,下标k的范围是:0,…N/2-1。 ??? 这样,就可以通过Mallat算法计算某个尺度值:将系数序列放至输入序列的开头,各个系数与相应的输入值相乘再累加。最后所得就是尺度展开序列上的第一个值。然后,系数序列向前跳过输入序列的两个位置(基于2的向下抽样),再计算各个系数与相应的输入值的乘积的和,这样就得到第二个值。依次类推,直到系数序列跳出输入序列的范围。此时为了使每个系数都与输入序列中的值相乘,把输入序列的开始部分的一些值加到序列的结尾。  整个

文档评论(0)

dbtx + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档