python小波分解wavelet去噪重构
前言
采用小波分解方式对数据进行分解,然后重构,演示整体代码
代码
import pywt
import matplotlib.pyplot as plt
import pandas as pdsampleData = [ 6. , 7.2, 5.4, 6. , 4.8, 4.6, 6.7, 7.1, 6.8, 0. , 5.2,6.4, 4.8, 5. , 7.8, 6.4, 3.1, 3.6, 4.7, 5.5, 7.1, 6. ,8.2, 7.2, 6.5, 9.3, 6.8, 8.4, 7.4, 6.7, 8.6, 5.4, 4.1,3.8, 5.6, 4.1, 7.3, 6.7, 6.5, 7.6, 8.6, 4.3, 6.2, 7.7,7.2, 6.9, 5.1, 4.6, 6.3, 5.2, 6. , 6.1, 6.2, 7.7, 8.1,6.9, 6.4, 6.4, 6.5, 6.8, 5.6, 5.2, 8.9, 5.4, 3.8, 5.9,5.8, 4.9, 4.3, 8.5, 6.2, 3.1, 3.9, 2.4, 7.3, 5.8, 7.5,7.3, 6. , 7.1, 7. , 7.3, 7.5, 4.6, 5.7, 4. , 7.6, 5.5,3.8, 7. , 4.2, 4.3, 5.7, 6.2, 6.9, 6.1, 5.5, 9.5, 8.9,6.1, 7. , 8.8, 4.8, 7.6, 9.5, 7.6, 7. , 4.6, 8.4, 5.4,7.9, 9.2, 5.8, 10.2, 8.9, 5.8, 7.2, 8.9, 6.8, 8.8, 7.7,6.4, 8. , 10.6, 7.9, 9.4, 5.8, 7.2, 7.1, 9.2, 7.3, 10.3,3.1, 9.8, 6.8, 11.4, 8.1, 7.7, 7.5, 7.0] w = pywt.Wavelet('db8') # 选用Daubechies8小波
maxlev = pywt.dwt_max_level(len(sampleData), w.dec_len)
print("maxlev: ", maxlev)
threshold = 0.05 # Threshold for filtering# 将信号进行小波分解for i in range(1, len(coeffs)):# 将噪声滤波sampleData_rec = pywt.waverec(coeffs, 'db8') # 将信号进行小波重构
# 保存
dataframe = pd.DataFrame(sampleData_rec)
dataframe.to_csv(r"imf-1_rec.csv",index=False,sep=',')
plt.plot(sampleData,"b",label='true_data')
plt.plot(sampleData_rec,"r",label='rec_data')
print(len(sampleData_rec))
结果展示
maxlev: 3
(30,)
77
[array([14.89060208, 17.48774106, 14.62732431, 14.16111973, 17.39674364,15.23687513, 13.66198872, 16.98478131, 16.04582462, 13.46882215,16.5251981 , 16.84176687, 13.05983399, 18.43398009, 18.69129045,18.13412361, 17.22175699, 18.33764118, 18.91146961, 13.79601851,18.22412343, 16.31726674, 16.19902123, 20.36499062, 20.34979924,22.27118849, 22.1946934 , 22.49473075, 22.026928 , 21.37043685]), array([ 0.02597377, 0.04627224, 0.83377698, -0.4094727 , -0.66537233,0.9654267 , 2.37728835, 1.73186496, -0.13460124, 4.2582881 ,-1.6431639 , 3.08247987, 0.06009821, 1.84186106, 1.99219538,-0.86047581, -0.26259531, -2.15543405, 0.12983753, -2.04923737,0.45461431, 0.26755979, -1.97147193, -1.14392232, 2.75158527,0.496431 , -0.76652795, 0.97028847, 1.45129 , 0.42297384]), array([-1.53165283, 3.90167297, 1.0713417 , -0.88960218, -0.93377672,-4.37583791, -0.28086216, -2.60909404, -0.02110962, 0.34448458,-0.49989578, -1.12639543, -0.15444765, -0.4400528 , 0.82299644,1.48393952, -0.32030378, -0.76129654, -1.01577166, -1.11048871,0.96183349, -0.99455448, -1.64585353, 2.25273347, -1.06781376,-0.76168693, 1.67411943, 0.47655085, 0.43817838, 1.63985866,1.33641088, -0.74595449, 0.96958856, -2.15826138, 0.03824809,2.0088925 , -2.82540503, -1.50755191, 1.44302522, -0.7894779 ,-0.10165996, 2.97673399, 0.17404927, -2.01625666, 1.99990472,0.66159429]), array([ 0.34482481, -1.29156053, -0.47973075, 0.52203713, 0.51414751,3.92438116, -1.26310503, 0.85073165, 0.07343796, -0.97518959,0.9308112 , 1.19327555, 0.06607814, -2.22254163, -0.62430618,0.99976817, 1.20568031, -0.24606229, 2.19671547, 0.0838348 ,-0.21327042, 2.68511782, -1.43872316, 0.19455079, 0.09690823,1.17238324, -0.38030448, -0.36054123, 0.6819401 , -0.47211671,-0.15042381, 1.07032598, 1.58819977, -2.1150514 , 0.9529688 ,-2.83481343, 2.23710703, 1.26627991, 1.99366416, -0.81516264,-0.65308376, 0.41792825, 1.53076635, 1.39865169, 0.74781752,-3.02966721, 0.85346178, 0.10372268, 0.09628719, -2.0333159 ,2.13431488, -2.70836621, -0.55006196, 1.67096465, 1.23637851,2.42158039, -2.04923712, -2.270118 , 2.33425608, -2.02102422,-0.78420639, 0.89368156, -1.85879552, -1.61098924, -1.07499289,-1.01434951, -3.61867498, -4.44962534, -1.56543207, -0.0356764 ,0.12405043, -0.15293619, 1.03965714, 3.61517855, 4.13996129,2.10191932, 0.57358088])]
140
备注:
需要源代码和数据集,或者想要沟通交流,请私聊,谢谢.
python小波分解wavelet去噪重构相关推荐
- 一维信号小波去噪算法C语言,[转载]一维小波分解与去噪重构
对随机一维信号实现多尺度小波分解,长度M=256,层数N=3. 解:一维随机信号是用nelec函数作为信号源,产生0~256范围内的信号. 实现小波按层分解的函数是: [C,L]=wavedec(s, ...
- python小波分解与重构_小波分解和重构
小波变换能够很好地表征一大类以低频信息为主要成分的信号, 小波包变换可以对高频部分提供更精细的分解 详见(http://www.cnblogs.com/welen/articles/5667217.h ...
- python小波分解与重构_python - 使用pyWavelets进行多级局部小波重构 - 堆栈内存溢出...
我设法编写了自己的wrcoef函数版本,该版本似乎可以正常工作: import pywt import numpy as np def wrcoef(X, coef_type, coeffs, wav ...
- mallat算法 c语言,基于STM32F4的小波分解(Mallat算法)程序说明
一.主要思路 原始信号:OrgSig 信号长度:DWT_SIG_LEN 小波分解层数:N 与MATLAB类似,小波分解后产生2个数组DWT_L和DWT_C,但定义与MATLAB不同.定义如下: DWT ...
- python小波去噪_python小波变换去噪
一,小波去噪原理: 信号产生的小波系数含有信号的重要信息,将信号经小波分解后小波系数较大,噪声的小波系数较小,并且噪声的小波系数要小于信号的小波系数,通过选取一个合适的阀值,大于阀值的小波系数被认为是 ...
- matlab dwt 多层分解,多尺度小波分解Matlab/Python实现与原理分析
小波分解的理解 Matlab中实现小波分解方式 在matlab中实现小波分解的方式比较简单,通过[C,L] = wavedec(X,N,'wname')得到C和L,如下图,C表示分解得到的各个层的小波 ...
- 【小波变换】离散小波分解Discrete Wavelet Transform
此篇博客记录自学离散小波分解的相关内容,以后若有更多理解在此篇更新. 一. 为什么需要离散小波分解 除离散变换外,还有连续小波分解,通过改变分析窗口大小,在时域上移动窗口和基信号相乘,最后在全时 ...
- MATLAB小波分解/重构wavedec/waverec函数中L和C的意义
这两天在做用小波阈值法进行信号去噪的问题,需要将信号进行五层小波分解,每进行一层分解时都将该层得到的细节系数CDi进行一次阈值化处理.这可以通过多次调用matlab中的dwt函数来实现.但是,在信号进 ...
- 小波变换、小波分解[python实现]//未完待续
更新于2022/10/27 小波变换与小波分解的不同 (235条消息) 小波与小波包.小波包分解与信号重构.小波包能量特征提取 暨 小波包分解后实现按频率大小分布重新排列(Matlab 程序详解)_c ...
最新文章
- centos7编译安装mysql5.7_在Centos7源码包编译安装MySQL5.7
- bpython bs4用哪个解释器好_针对python爬虫bs4(BeautifulSoup)库的基础问题
- 各种软路由 - 自制路由器
- WebForm页面使用Ajax
- 苹果平板可以用html么,9.7寸ipad pro能用pencil吗?ipad pro全面支持Apple Pencil
- 怎么判断冠词用a还是an_英文写作常见错误学习笔记 | 冠词
- hdu 5631 Rikka with Graph(图)
- java vector_Java Vector lastElement()方法与示例
- 关于车辆和车牌的检测相关文章
- java 重写equals的要点_浅谈java 重写equals方法的种种坑
- Race Condition是什么
- 多核服务器装SQL2005,提示SQL server服务无法启动
- 信用评分卡模型分析(基于Python)--python实现
- CAD梦想画图操作界面
- 《穿越计算机的迷雾》读书笔记八
- VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- 使用Spring Boot开发财务系统视频
- 计算机学win7画图,详解使用画图工具的win7中的操作步骤
- 咪咕盒子链接服务器失败_咪咕打卡正式开启,你的疑问都可以在这里找答案!...
- YY客网络广播 内测进行中!