GSL中的小波变换

小波变换

    本章描述进行离散小波变换(DWTs)的函数。本库包括用于一维和二维实时数据的小波。小波函数声明在头文件gsl_wavelet.h和gsl_wavet2d .h中。

34.1 定义

    连续小波变换及逆由以下关系定义:

 且

 其中基函数ψs,τ 是由单个函数进行比例变换得到的,称为母小波。

小波变换的离散版本作用于等间距的样本,具有固定的尺度和平移步长(s,τ)。频率轴和时间轴通过水平参数j在2j的尺度上进行并向采样。

    由此得到的函数族{ ψj,n }构成了平方可积信号的一个标准正交基。离散小波变换是一种O(N)算法,也称为快速小波变换。

34.2 初始化

gsl_wavelet

    本结构体包含定义小波的滤波器系数和任何相关的偏移参数。

扫描二维码关注公众号,回复: 13279767 查看本文章

gsl_wavelet * gsl_wavelet_alloc(const gsl_wavelet_type * T, size_t k)

    本函数分配并初始化一个类型为T的小波对象,参数k选择小波族中的特定成员。如果可用内存不足或选择了不支持的成员,则返回空指针。

已实现下列小波类型:

gsl_wavelet_type

    gsl_wavelet_daubechies

    gsl_wavelet_daubechies_centered

    这是带有k/2消失矩的最大相位Daubechies小波族。实现的小波分别为k = 4,6,…,20, k为偶数。

    gsl_wavelet_haar

gsl_wavelet_haar_centered

这是Haar小波。对于Haar小波,k的唯一有效选择是k = 2。

    gsl_wavelet_bspline

gsl_wavelet_bspline_centered

    这是(i, j)阶的双正交B样条小波族。k = 100*i+j的实现值是103、105、202、204、206、208、301、303、305、307、309。

小波的中心形式将各种子波的系数排列在边缘上。因此,小波变换系数在相平面上的可视化结果更容易理解。

const char * gsl_wavelet_name(const gsl_wavelet * w)

    本函数返回一个指向w的小波族名称的指针。

void gsl_wavelet_free(gsl_wavelet * w)

    本函数释放小波对象w使用的内存。

gsl_wavelet_workspace

    本结构包含与输入数据大小相同的标记空间,用于在转换期间保存中间结果。

gsl_wavelet_workspace * gsl_wavelet_workspace_alloc(size_t n)

    本函数为离散小波变换分配一个工作空间。要对n个元素执行一维变换,必须提供大小为n的工作空间。对于n×n矩阵的二维变换,分配大小为n的工作空间就足够了,因为变换是在单独的行和列上进行的。如果可用内存不足,则返回空指针。

void gsl_wavelet_workspace_free(gsl_wavelet_workspace * work)

    本函数释放工作空间work使用的内存。

34.3 变换函数

本节描述执行离散小波变换的实际函数。注意变换使用周期边界条件。如果信号在采样长度上不是周期性的,那么在每一层变换的开始和结束都会出现杂散系数。

34.3.1 一维小波变换

int gsl_wavelet_transform(const gsl_wavelet * w, double * data, size_t stride,

size_t n, gsl_wavelet_direction dir, gsl_wavelet_workspace * work)

int gsl_wavelet_transform_forward(const gsl_wavelet * w, double * data,

size_t stride, size_t n, gsl_wavelet_workspace * work)

int gsl_wavelet_transform_inverse(const gsl_wavelet * w, double * data,

size_t stride, size_t n, gsl_wavelet_workspace * work)

这些函数以数组data上的步幅stride计算长度为n的正向和逆离散小波变换。

这些函数计算,数组data上的步长为stride,长度为n的,正、逆离散小波变换。变换n的长度限制为2的幂次。对于transform版的函数,参数dir可以是forward(+1)或backward(−1)。工作空间work的长度必须是n。

在正向变换中,原始矩阵的元素在紧凑的三角形存储布局中被离散小波变换fiwj,k所替换,其中j为第j = 0...J-1级的索引,k是每一层内系数的指标,k = 0...2 j−1。总级别数是J = log2(n)。输出数据的形式如下:

     其中,第一个元素是平滑系数s−1,0,然后是每一级j的细节系数dj,k。逆向变换将这些系数反求得到原始数据。

这些函数在成功完成后返回状态GSL_SUCCESS。如果n不是2的整数次幂,或者没有提供足够的工作空间,则返回GSL_EINVAL。

猜你喜欢

转载自blog.csdn.net/yxmlhc/article/details/120591387
今日推荐