美文网首页
小波变换(一)

小波变换(一)

作者: 今日你学左米啊 | 来源:发表于2019-07-22 10:34 被阅读0次

    小波变换(一)

    由于项目可能会用到的原因,学一下,感觉已有的通俗易懂教程不够相应的学术性.

    教程:《数字信号处理》陈后金著
    视频教程:中国大学mooc-数字信号处理

    [TOC]

    傅里叶变换的局限性

    在正式进入小波变换之前,我们不妨来讨论一下傅里叶变换的局限性和为什么我们需要引入小波变换。
    回想傅里叶变换的公式
    F(\omega) = \int^{\infty}_{-\infty}f(t)exp(-j\omega t)dt

    • 从积分的算式我们可以轻松知道,在积分式一结束的同时,
      另外一个谱的信息就会完全消失,就是说,傅里叶变换的频域上不含有时间信息

    • 同时从积分的上下限我们也可以看到,当信号发生一些不平稳的变化的时候,傅里叶变换并不能很好的察觉到他的幅度和位置,因为从表达式可以看到,傅里叶变化对每一个时刻的值都是平等对待的,而且所有的突变值也会被积分区间所平分.所以我们可以看到傅里叶变换对窄带信号检测不敏感,不能处理非平稳信号

    • 从滤波的角度看,回想一下,当信号频谱和噪声频谱是相互分离的时候,我们总可以分离信号和噪声,通过一些加窗滤波的方法就可以了.但是如果信号和噪声的频谱是混在一起的,那么,这个时候傅里叶变换就无能为力了,也就是说,滤波靠的是信号域和噪声域在频谱上的分离

    短时傅里叶变换(STFT)

    怎么来解决以上的问题呢?有人提出了短时傅里叶变换来加以改善,我们先来看看短时傅里叶变换的表达式:
    F(\omega,t) = \int^{\infty}_{-\infty}f(\tau)w(\tau -t)exp(-j\omega \tau)d\tau
    F[m,k] = \sum_nx[n]w[n-k]exp(-j\frac{2\pi}Nmn)\quad m=0,1,\cdots,N-1
    通过加入一个滑动的窗函数w(\omega,t)(长度为N),来弥补傅里叶变换的频谱上没有时间信息这个弊端

    其实原理很简单,就是原来一段的傅里叶变换,现在固定分成几段来分别进行傅里叶变换,那么分成的这几段,可以在时间上独立开来,就变成了具有时间信息的傅里叶变换

    但当然,这个加窗对整个变换也是有影响的,这里不妨先介绍两个术语:

    时间分辨率

    时间分辨率由时窗宽度T_p决定,
    T_p =NT=\frac N{f_{sample}}
    T_p,时间分辨率越高.

    频谱分辨率

    频谱分辨率是指分辩信号中相邻谱峰的能力
    \triangle f_c = \frac1{T_p}
    \triangle f_c,频谱分辨率越高。

    在对信号的时频分析中,我们希望时间分辨率和频谱分辨率都可以比较高,但是从定义式里面我们就知道,时间分辨率和频谱分辨率是相互制约的,同时也说明,我们没办法同时获得较高的时间分辨率和频谱分辨率.

    从这里我们可以再一步印证出,傅里叶变换(连续)具有无穷的频谱分辨率,而无时间分辨率.

    现在我们回来讨论短时傅里叶变换的窗函数w[n-k]的长度N,显然N如果变大,频谱分辨率肯定是越来越好的,时间分辨率确实便来越差的.同时N如果变小,频谱分辨率肯定是越来越差的,时间分辨率便是越来越差的.

    我们到底想要什么东西

    既然上面说了时间分辨率和频谱分辨率已经是不可兼得的了,那么现在问题来了,我们到底想得到什么东西?
    回想一下:
    傅里叶变换的缺点在他不能有效地处理非平稳信号,短时傅里叶变换的N是固定的,往两边变化都会有制约.

    那我们能不能在分析的过程中让这个N变起来?让他在信号变化快的时候窗变小一点,获得较高的时间分辨率,较低的频谱分辨率.在信号变化慢的时候窗变大一点,获得较低的时间分辨率,较高的频谱分辨率.

    这个时候就应该给大家引入小波变换了.大家可以先无道理地认为小波变换就是一个窗长度会变的傅里叶变换(虽然我一直不喜欢这个通俗的比喻...)

    信号的正交表示

    在正式讲小波变换前,需要先补充一些知识.

    在信号分析中,我们常将信号展开成一组信号的线性组合,即有
    x(t) = \sum_n a_n \cdot \phi_n(t)

    其中,{a_n;n\in Z}为展开系数,{\phi_n(t);n\in Z}为展开函数
    若展开式具有唯一性,即不同的信号对应不同的展开系数a_n ,则该展开函数\phi_n(t)称为基(basis)。

    对基函数来说,若其内积满足:
    <\phi_l(t),\phi_k(t)> = \int\phi_l(t)\cdot\phi_k(t)dt = \delta[k-l]
    称此基函数为正交规范(orthonormal)基函数.正交在于其他内积等于0,规范在于系数是1

    在此基础上我们可以知道,由于每个基函数之间都是互相正交的,所以我们可以将x(t)和基函数\phi_n(t)进行内积计算,便可以得到相应的展开系数a_n,也就是:

    a_n = <x(t),\phi_n(t)> = \int x(t)\cdot\phi_n(t)dt

    稍微有点泛函常识的我们可以知道,这就是将信号往给定基函数元素所张成的内积空间里面投射

    比较出名的就是傅里叶级数,将信号往以e^{j\omega t}为基函数的内积空间(无穷维空间)内投射,得到的相应正交基函数的特征值(也就是展开系数a_n)这里的a_n就是傅里叶级数里面的C_n.大家大可看看表达式,都是一模一样的.

    当然这个是反着来用的,根据每个维度的特征值来合成回x(t),也就是逆变换

    这里要注意的还有一点是,所谓的基函数,其实不仅仅是一个函数,而是一些有相同特征且相互正交的函数族.

    小波展开与小波变换

    小波函数

    小波(wavelet)信号是一类衰减较快的波动信号,其能量有限,且相对集中在局部区域.
    先来看看常用的小波函数:

    image
    小波函数(也称为母小波)的基本特性:

    小波函数\psi(t)通过展缩和平移得到小波函数族\psi_{j,k}(t)
    image
    这里小波函数由于相对集中在局部区域,所以比傅里叶变换的基函数多了平移这一步.
    小波函数族定义为:

    尺度函数

    和小波变换相关的还有尺度函数(父小波)(Scaling Function)

    image
    由尺度函数\varphi(t)通过展缩和平移得到尺度函数族\varphi_{j,k}(t)

    尺度函数族\varphi_{j,k}(t)定义为:
    \varphi_{j,k}(t) = 2^{j/2}\varphi(2^jt-k);\quad j,k\in Z

    小波函数族和尺度函数族前面的系数2^j是为了保持基函数的能量始终为1

    对于这两个后面会有更理性的认识,这里我们先直接介绍DWT和IDWT

    离散小波变换 (DWT)

    有了小波函数和尺度函数,就相当于明确了我们的小波的基函数.
    我们可以利用小波函数族\psi_{j,k}(t),尺度函数族\varphi_{j,k}(t),来将信号进行小波展开:
    x(t) = \sum_nc_0[k]\varphi_{0,k}(t) + \sum_nd_0[k]\psi_{0,k}(t) + \sum_nd_1[k]\psi_{1,k}(t) +\cdots
    同时,上式也被称为离散小波逆变换 (IDWT)

    相反地,由信号x(t)求解展开系数{c_0[k],d_1[k],d_2[k]}称为离散小波变换(Discrete Wavelet Transform, DWT)

    我们常用c_0来表示信号的粗糙成分,d_{j,k}来表示信号的精细部分.详细内容会在下一篇博客继续阐述.

    结语

    之前总有一段时间不想学小波,感觉这个名词有点高大上什么的,然后因为最近要涉及到相关的信息,所以不得不学一下.学完个基础之后不得不感叹的是,小波变换我觉得比傅里叶变换还要来得简单直接,演示的效果有时还蛮惊艳的.

    参考资料

    形象易懂讲解算法I——小波变换
    小波变换完美通俗讲解系列之 (一)
    小波变换完美通俗讲解系列之 (二
    Wavelet transform - Wikipedia
    A Tutorial of the Wavelet Transform


    Ruch, David K. And Van Fleet, Patrick J.《Wavelet Theory:An elementary Approach With Applications》

    Wavelets in Engineering Applications 罗高涌 (这可是我们学院罗教授出的书喔)
    购买链接如下:
    Wavelets in Engineering Applications

    相关文章

      网友评论

          本文标题:小波变换(一)

          本文链接:https://www.haomeiwen.com/subject/sdsblctx.html