完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
小波变换
-小波,一个神奇的波,可长可短可胖可瘦(伸缩平移),当去学习小波的时候,第一个首先要做的就是回顾傅立叶变换(又回来了,唉),因为他们都是频率变换的方法,而傅立叶变换是最入门的,也是最先了解的,通过傅立叶变换,了解缺点,改进,慢慢的就成了小波变换。主要的关键的方向是傅立叶变换、短时傅立叶变换,小波变换等。小波变换不仅可以获取信号的频率成分,还能得到每个频率成分出现的时间。这就是其优于傅里叶和短时傅里叶变换之处。 小波多分辨率分析 -小波多分辨率分析也叫多尺度分析,是小波分解与重构(Mallat算法)的理论基础。 小波分解(DWT) -对原始信号进行分解,通过小波分解高通滤波器G和低通滤波器H来完成,过程如图: -对原始信号通过滤波器,再经过下采样得到分解的高频系数D(细节部分)和低频系数A(近似部分),多层分解只需要对上一层分解出来的低频分量继续分解即可,理解不难,代码编程时只需要关注三点:与Matlab一样的数据对称拓延、卷积计算以及下采样,多层分解通过调用单层分解即可。 小波重构(IDWT) -对小波分解的系数重构,即是分解过程的逆变换,保证重构后的信号与原始信号一致,不丢失任何信息。重构的过程如下: -从分解的最底层往上重构出信号,首先是上采样,一般采用隔值插零的方法,即增加数据量来达到与原始信号长度相同的数据,然后分别通过重构的高通滤波器g和低通滤波器h,最终重构出原始信号,如果代码编写的没问题,那么重构出的信号与原始信号完全一致。而小波变换去噪的过程就是在分解后的各层系数中找出噪声所在的层,对该层的低频系数或者高频系数进行处理,比如软硬阈值处理,处理后再经过重构,即可重构出去除噪声的信号。 -所以小波变换在信号去噪中应用非常广泛。 小波去脉搏波基线漂移 -以我以前做过的血氧检测仪来说,血氧饱和度的计算需要通过采集人体的脉搏波来处理,采集脉搏波自然会引入一定的噪声,如高频噪声、基线漂移和运动伪差等,对于基线漂移,硬件电路上已经没法去除了,所以只能通过软件来处理,即通过小波变换来处理脉搏波的基线漂移。下面是我采集的两段带有明显基线漂移的自身的脉搏波 -第二段的基线漂移很明显,这影响到脉搏波的形态和幅值,导致血氧饱和度计算出现误差,对第二段波形利用db4小波对其进行5层分解,然后将每层分解的系数再重构,得出每层重构出的细节分量和进近似分量 -可以看到第5层的近似分量与基线漂移的形态完全一致,将其从原始脉搏波波形中去除即可,去除后的波形如下: 基本消除了原始波形的基线漂移。 基于STM32F4的小波变换 -由于需要将小波变换的代码移植到控制器上运行,所以需要编写相应的小波分解与重构的算法,所以需要编写出一维单层小波分解,单层重构以及多层分解与多层重构四个函数即可完成。下面是四个函数的头文件,欢迎一起交流,第一次写博客,不太会,哈哈 //函数声明// //小波变换 uint16_t DWT_Dwt( float32_t* p_OrgSig, //原始信号 uint16_t OrgSigLen, //信号长度 float32_t *cA, //近似系数 float32_t *cD //细节系数 ); //小波反变换 uint16_t DWT_Idwt( float32_t *cA, //近似系数 float32_t *cD, //细节系数 uint16_t cALen, //系数长度 float32_t* p_OrgSig //重构的信号 ); //小波分解 uint16_t DWT_WaveDec( float32_t* p_OrgSig, //原始信号 uint16_t OrgSigLen, //信号长度 uint16_t DecLevel//, //分解层数 ); //小波重构 uint16_t DWT_WaveRec( float32_t* p_C, //DWT_C uint16_t* p_L, //DWT_L uint16_t DecLevel, //小波分解的层数 float32_t* p_OrgSig //重构出的原始信号 );` |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1792 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1626 浏览 1 评论
1094 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
732 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1682 浏览 2 评论
1943浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
742浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
578浏览 3评论
601浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
563浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 15:41 , Processed in 1.003150 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号