小波(二代小波)分解程序说明"/>
liftwave matlab,基于STM32F4的提升小波(二代小波)分解程序说明
一、主要思路
原始信号:OrgSig
与基于MALLAT算法的小波变换不同,提升小波变换不产生数组L,只产生C数组。定义如下:
DWT_C:[cD1 | cD2 | … cDN | cAN],其中cDx代表第x层的细节系数,cAN代表第N层的近似系数。
但是,信号长度必须是2的整数次幂。
由于算法可实现原位计算,因此,每层变换后,系数仍存在原始信号的数组中,格式为:[CD,CA]。下一层再变换时,将CA作为原始信号即可,直到分解结束。
每层变换的步骤:分裂->提升(多层预测/更新)->合并
各层提升的系数由MATLAB中的liftwave函数计算得到。基于MATLAB中此系数的性质,在此算法中,无论预测还是更新,都采用同一个函数;无论变换还是逆变换都采用加法运算。但是,逆变换中滤波器的符号取反。
与Mallat算法相比,不需要过多临时变量,不需要过多大的临时数组。需要的程序堆栈比较少。
二、函数原型
1、 提升格式更新函数DWT_lsupdate
/****************************************
**将数据进行提升格式更新/预测
//V1.00 实现基本功能 2016-10-12 14:40:59
* @原理:
1、与MATLAB中lsupdate函数的功能类似
* @return 正常则返回1,错误则返回0
*****************************************/
uint16_t DWT_lsupdate(
float32_t* p_Sig1, //信号1,待更新的信号
float32_t* p_Sig2, //信号2,另一路信号
uint16_t SigLen, //信号1和信号2的长度
const float32_t* p_FilterCoef, //滤波器系数
const uint8_t FilterCoefLen, //滤波器系数长度
const int8_t DF, //滤波时的延迟
int8_t IsLWT //LWT还是ILWT?1代表LWT,-1代表ILWT
)
2、 分裂函数DWT_split
/****************************************
**分裂函数
//V1.00 实现基本功能 2016-10-12 15:04:09
更多推荐
liftwave matlab,基于STM32F4的提升小波(二代小波)分解程序说明
发布评论