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

编程入门 行业动态 更新时间:2024-10-11 13:26:43

liftwave matlab,基于STM32F4的提升<a href=https://www.elefans.com/category/jswz/34/1769737.html style=小波(二代小波)分解程序说明"/>

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的提升小波(二代小波)分解程序说明

本文发布于:2024-03-06 05:20:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1714471.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:小波   分解   程序   liftwave   matlab

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!