小波变换C++实现(一)----单层小波变换
文章转自:
http://www.cnblogs.com/IDoIUnderstand/archive/2013/03/30/3280724.html
【小波变换】STL版 一维离散小波变换(DWT)库,完全按matlab的wavelet toolbox 的API实现的 - richard.hmm - 博客园
http://www.cnblogs.com/IDoIUnderstand/archive/2013/04/02/3280723.html
一、小波分解
按照Mallat分解算法,一维多层小波分解的过程可类似看成对一维单层小波变换的递归调用,因此先从一维单层离散小波变换说起。
1、边界延拓
边界延拓的方式有 周期延拓 和 对称延拓 两张方式,在MATLAB的实现中采用的是对称延拓的方式,为了便于对比,采用对称延拓的方式。
对称延拓实际上是按照左右对称的方式延拓数据,延拓的个数根据第2步计算卷积后的数据长度确定
设滤波器长度为L,则对称延拓的方式为在信号两边各延拓L-1个元素,延拓完之后,信号的长度为SignalLen+2*(L-1)。
2、卷积的计算
由于信号分析中采用的是离散的数据,因此卷积的计算使用离散卷积计算方法。计算过程参见:离散卷积的计算。
分别计算延拓之后的信号与滤波器的高频成分和低频成分的离散卷积得到小波变换后的高频成分(细节分量)和低频成分(近似分量)。
3、下采样
为了保证两组滤波器输出系列总长度与输入序列总长度保持一致,对每组滤波器的结果进行二抽取(下采样)
其方法为取延拓信号与滤波器序列卷积的奇数序号的元素(从0开始)
小波变换C++实现(一)----单层小波变换的更多相关文章
- 小波学习之一(单层一维离散小波变换DWT的Mallat算法C++和MATLAB实现) ---转载
1 Mallat算法 离散序列的Mallat算法分解公式如下: 其中,H(n).G(n)分别表示所选取的小波函数对应的低通和高通滤波器的抽头系数序列. 从Mallat算法的分解原理可知,分解后的序 ...
- 【DWT笔记】傅里叶变换与小波变换
[DWT笔记]傅里叶变换与小波变换 一.前言 我们经常接触到的信号,正弦信号,余弦信号,甚至是复杂的心电图.脑电图.地震波信号都是时域上的信号,我们也成为原始信号,但是通常情况下,我们在原始信号中得到 ...
- 浅谈压缩感知(十四):傅里叶矩阵与小波变换矩阵的MATLAB实现
主要内容: 傅里叶矩阵及其MATLAB实现 小波变换矩阵及其MATLAB实现 傅里叶矩阵及其MATLAB实现 傅里叶矩阵的定义:(来源: http://mathworld.wolfram.com/F ...
- 对小波变换中DWT和CWT的理解
转载自 http://blog.sina.com.cn/s/blog_633750d90100hbco.html 连续小波变换的概念.操作.及时间尺度图的显示 最近很多网友问到关于连续小波变换的诸多问 ...
- 小波变换C代码
#include <stdio.h> #include <stdlib.h> #define LENGTH 512//信号长度 /*********************** ...
- 小波变换检测信号突变点的MATLAB实现
之前在不经意间也有接触过求突变点的问题.在我看来,与其说是求突变点,不如说是我们常常玩的"找不同".给你两幅图像,让你找出两个图像中不同的地方,我认为这其实也是找突变点在生活中的应 ...
- 小波学习之二(单层一维离散小波变换DWT的Mallat算法C++实现优化)--转载
小波学习之二(单层一维离散小波变换DWT的Mallat算法C++实现优化) 在上回<小波学习之一>中,已经详细介绍了Mallat算法C++实现,效果还可以,但也存在一些问题,比如,代码 ...
- 小波变化库——Pywalvets学习笔记
笔记 术语(中英对照): 尺度函数:scaling function(又称父函数 father wavelet) 小波函数:wavelet function(又称母函数 mother wavelet) ...
- [Python ]小波变化库——Pywalvets 学习笔记
[Python ]小波变化库——Pywalvets 学习笔记 2017年03月20日 14:04:35 SNII_629 阅读数:24776 标签: python库pywavelets小波变换 更多 ...
随机推荐
- 缓存 HttpContext.Current.Cache和HttpRuntime.Cache的区别
先看MSDN上的解释: HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象. HttpRuntime.Cache:获取当前应用程序的Cache. 我们再用. ...
- Python之路【目录】 2
http://www.cnblogs.com/wupeiqi/articles/4938499.html
- 详解FindBugs的各项检测器 .
FindBugs是一个静态分析工具,在程序不需运行的情况下,分析class文件,将字节码与一组缺陷模式进行对比,试图寻找真正的缺陷或者潜在的性能问题.本文档主要详细说明FindBugs 2.0.3版本 ...
- vim黏贴代码格式混乱的解决方法
from:http://blog.csdn.net/commshare/article/details/6215088 感谢牛人的文章.解决了我在vim使用中,很头疼的问题. 在vim新建文件的时候, ...
- php apache用户写文件夹权限设置
php一般是以apache用户身份去执行的,把apache加入到存储你文件的父文件夹属组里去,然后改该父文件夹权限为775,这样属组成员就有写的权限,而apache属于这个组就可以改写该目录下所有文件 ...
- 工具介绍 - NimbleText
非常实用的工具, 即使不是程序员也有必要掌握这个简单的小工具. 这个工具有桌面版和在线版两个版本. 桌面版地址: http://nimbletext.com/ 在线版地址: http://nimble ...
- PlayMaker 学习笔记
1.v1.7.8.3版本无法使用全局变量,原因是Assets\Plugins\PlayMaker下的Resources文件夹变成中文了,无法创建全局变量文件,手动创建一个Resources文件夹即可
- 清北暑假模拟day1 艳阳天
/* 注意P有可能不是质数,不要用欧拉函数那一套,正解可以倍增,就是等比数列和的性质,注意n是否为奇数 */ #include <cstdio> #include <algorith ...
- Mac os壁纸提取
想必用过Mac os系统的朋友都知道mac壁纸,提取出来用作壁纸是十分好看的 下面给出壁纸的位置,自己用文件管理器打开然后复制出来即可! 系统盘:/Library/DesktopPictures
- _beginThreadex创建多线程解读【转】
_beginThreadex创建多线程解读 一.需要的头文件支持 #include <process.h> // for _beginthread() 需要的设置:Proj ...