Wavelet

博客分类: tools 阅读次数: comments

Wavelet

国际流行的几款小波分析软件—重点介绍斯坦福大学的Wavelab

Wavelab

以下文字l转摘自论文《小波分析软件Wavelab及其应用》(杨汉生等,2010) 小波分析是调和分析发展史上的里程碑,从它诞生到现在不过十几年历史,但已在诸如信号处理、故障诊断、系统辩识、神经网络、最优控制等众多领域取得了良好的应用效果。实践表明,小波分析作为一种新的数学工具,具有十分广阔的研究和应用前景。小波分析软件也随着小波分析的发展应运而生,主要有: (1)Wavelet Toolbox 这是目前最有名的小波分析软件,该工具箱包括二百多个M函数,基本上实现了小波分析领域已有的算法,也被人们所熟知。但由于函数太多,难于记忆,对于刚接触该工具箱的人来说更是难于掌握。

(2)Liftpack : 用C语言开发的用于双正交小波变换的软件,小波变换的算法基于提升格式。可在DOS、Windows以及MAC上运行。

(3)WaveTool: 这是一个用于信号处理的工具箱。它有两个版本,WaveTool Filter Design面向基本小波和多尺度滤波器设计;WaveTool Signal Analysis增加了一些功能,可用来构造任意树型结构多尺度滤波器组,可读入二进制和Matlab格式的数据并对数据进行处理,同时也可以调用Matlab函数。该软件既有基于Windows的版本,也有基于UNIX的版本。

(4)S+Wavelets 这是S2PLUS语言和图形数据分析环境的拓展,可在Windows和Unix平台上运行,它可以进行离散小波变换及其逆变换,多分辨分析,小波包变换和局部余弦变换,统计信号抽取和估计,变换的最优基自适应选取,Matching Pursuit分解等小波分析的很多内容。

    小波分析软件种类繁多,在功能上都各有千秋,Wavelab就是一种比较好的小波分析软件。
    Wavelab是由Stanford大学Maureen Clerc等人开发的小波分析软件,它是用当今国内外广为流行的科学计算可视化软件Matlab语言编写的,可在Matlab5.x以上版本运行,操作系统可以为Windows、UNIX或MAC。该软件包括1293个文件与50多个子目录,基本涵盖了正交小波与双正交小波变换、小波包变换、余弦包变换、插值小波变换时频分析、匹配追踪等小波研究的主要内容。Wavelab采用模块化设计,功能强大、界面直观、操作简单,由于直接链接在Matlab环境下,所以无需编译及连接即能执行,能够满足众多小波研究领域的需求,其主要特点如下: (1)强大方便的图形功能。Wavelab具有灵活图形图像处理功能,可以方便地利用图形、图像、声音、动画等多媒体技术直接表述数值计算的结果,可以选择不同的坐标系,可以设置颜色、线型、视角等,可以在图中加入比例尺、标题等标记。 (2)良好的开放性。Wavelab的所有源代码都是公开的,并且标注得十分详尽,包括函数功能、变量的含义、算法的参考文献、编写时间、编写者姓名及通讯方式等。使用者可以对它的原函数进行修改,也可以加入新的函数。

(3)编程效率高、支持混合编程。Wavelab有丰富的库函数,同时它还可以直接调用Matlab的库函数,编程效率比Basic、Fortran和C高。同时它支持混合编程,可以方便地调用Basic、Fortran和C语言程序。

(4)界面友好,用户使用方便。由于是在Matlab环境下运行,所以对于熟悉Matlab的使用者,可以毫无困难地使用Wavelab。同时Wavelab包含很多帮助文件和演示文件可以帮助使用者迅速掌握其使用方法。

http://www-stat.stanford.edu/~wavelab/Wavelab_850/download.html

Discrete Wavelet Transform (DWT)

Discrete Wavelet Transform (DWT)

Feature extraction/reduction using DWT

import pywt
import matplotlib.pyplot as plt
import numpy as np

ts = [2, 56, 3, 22, 3, 4, 56, 7, 8, 9, 44, 23, 1, 4, 6, 2]

(ca, cd) = pywt.dwt(ts,'haar')

cat = pywt.thresholding.soft(ca, np.std(ca)/2)
cdt = pywt.thresholding.soft(cd, np.std(cd)/2)

ts_rec = pywt.idwt(cat, cdt, 'haar')

plt.close('all')

plt.subplot(211)
# Original coefficients
plt.plot(ca, '--*b')
plt.plot(cd, '--*r')
# Thresholded coefficients
plt.plot(cat, '--*c')
plt.plot(cdt, '--*m')
plt.legend(['ca','cd','ca_thresh', 'cd_thresh'], loc=0)
plt.grid('on')

plt.subplot(212)
plt.plot(ts)
plt.hold('on')
plt.plot(ts_rec, 'r')
plt.legend(['original signal', 'reconstructed signal'])
plt.grid('on')
plt.show()

3篇小波分析的基础入门材料(绝对入门级!含PyWavelet实例)