1. 核心属性(小波基类型)
小波名称 | 描述 | 常用场景 |
---|---|---|
"haar" |
Haar小波(最简单) | 快速计算、边缘检测 |
"db1" ~"db20" |
Daubechies小波 | 通用信号/图像处理 |
"sym2" ~"sym20" |
Symlets小波(近似对称) | 需要对称性的重构任务 |
"coif1" ~"coif5" |
Coiflets小波 | 高精度分析 |
2.主要结构体(类)
1). wave_object
(小波对象)
属性:
-
char *wname
:小波名称(如"db4", "sym5"等) -
int filtlength
:小波滤波器长度 -
double *lpd
:低通分解滤波器系数 -
double *hpd
:高通分解滤波器系数 -
double *lpr
:低通重构滤波器系数 -
double *hpr
:高通重构滤波器系数
2). wt_object
(小波变换对象)
属性:
-
wave_object wave
:使用的小波对象 -
char *method
:变换方法("dwt","swt","modwt"等) -
char *ext
:边界延拓方式("sym","per","zpd"等) -
int siglength
:输入信号长度 -
int outlength
:输出长度 -
int J
:分解层数 -
double *output
:变换结果数组 -
int *length
:各层系数长度数组
3). threshold_object
(阈值对象)
属性:
-
char *thresh
:阈值类型("hard","soft") -
char *dmethod
:阈值计算方法("universal","sure","hybrid") -
double *dout
:去噪后系数 -
int N
:信号长度 -
int J
:分解层数
3. 主要方法
初始化方法
wave_object wave_init(const char *wname); // 初始化小波对象
wt_object wt_init(wave_object wave, const char *method, int siglength, int J); // 初始化小波变换对象
threshold_object threshold_init(int N, int J); // 初始化阈值对象
常用小波基
Wavelib支持多种小波基,可通过wave_init
函数指定:
-
Daubechies小波:"db1"到"db20"
-
Symlets小波:"sym2"到"sym20"
-
Coiflets小波:"coif1"到"coif5"
-
Biorthogonal小波:"bior1.1"到"bior6.8"
-
Reverse biorthogonal小波:"rbio1.1"到"rbio6.8"
小波变换方法
(1) dwt()
方法 - 离散小波变换
函数原型:
void dwt(wt_object wt, const double *inp);
参数说明:
参数 | 类型 | 说明 |
---|---|---|
wt |
wt_object |
已初始化的小波变换对象,包含小波类型、分解层数等配置 |
inp |
const double* |
输入信号数组(一维),长度必须与 wt->siglength 一致 |
功能说明:
-
执行多级离散小波分解(Mallat算法)
-
结果存储在
wt->output
中,结构为:
[A_J, D_J, D_{J-1}, ..., D_1]
(J级近似系数 + 各级细节系数,从高层到低层) -
各层系数长度存储在
wt->l