liftwave matlab,基于STM32F4的提升小波(二代小波)分解程序说明

本文介绍了基于STM32F4的提升小波变换(Liftwave)程序,包括主要思路、函数原型和移植过程。提升小波变换不产生L数组,仅生成C数组,通过分裂、提升更新/预测和合并步骤进行。与Mallat算法相比,提升小波变换需要较少的程序堆栈和临时变量。提供的函数包括DWT_split、DWT_lsupdate等,适用于信号的分解和重构。
摘要由CSDN通过智能技术生成

一、主要思路

原始信号: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值