利用python的强大函数库,实现波形的小波降噪、带通滤波、时阈分析、FFT波形转换
import math
import matplotlib.pyplot as plt
import pywt
import pandas as pd
import numpy as np
import scipy as signaldef WaveletDeNoising(path):xy = pd.read_csv(path, sep=', ') # 读取CSV文件s = []for each in list(xy):s.append(float(each))# 将需要的数据保存在列表s中w = pywt.wavedec(s, 'sym7', level=6) # 小波分解,pywt.wavedec(数据, 小波基, 分解尺度)# 分解得到的w是一个列表,w[0]是最大尺度的近似系数,w[1]是最大尺度的细节系数,w[2]是次大尺度的细节系数,以此类推n = len(s)thr = round(np.sqrt(2 * np.log(n)), 4) # 阈值获取,方式为sqtwologfor i in range(1, len(w)):w[i] = pywt.threshold(w[i], thr, mode='soft')# 阈值处理函数rec_s = pywt.waverec(w, 'sym7') # 小波重构plt.subplot(211)plt.plot(s, linewidth=0.5)plt.subplot(212)plt.plot(rec_s, linewidth=0.5)plt.show()print(f'Hi, process success!')def WaveFiltering(path):xy = pd.read_csv(path, sep=', ') # 读取CSV文件s = []for each in list(xy):s.append(float(each))b, a = signal.butter(8, [0.01, 0.4], 'bandpass') # 配置滤波器 8 表示滤波器的阶数rec_s = signal.filtfilt(b, a, s) # data为要过滤的信号plt.subplot(211)plt.plot(s, linewidth=0.5)plt.subplot(212)plt.plot(rec_s, linewidth=0.5)plt.show()print(f'Hi, process success!')def TimeThresholdAnalysis(path):xy = pd.read_csv(path, sep=', ') # 读取CSV文件s = []for each in list(xy):s.append(float(each))df_mean = np.mean(s) # 均值df_var = np.var(s) # 方差df_std = np.std(s) # 标准差df_max = np.max(s) # 最大值df_rms = np.sqrt(pow(df_mean, 2) + pow(df_std, 2)) # 均方根df_skew = pd.Series(s).skew() # 偏度df_kurt = pd.Series(s).kurt() # 峭度df_boxing = df_rms / np.abs(s).mean() # 波形因子df_fengzhi = np.max(s) / df_rms # 峰值因子df_maichong = np.max(s) / np.abs(s).mean() # 脉冲因子sum_size = 0for i in range(2000):sum_size += math.sqrt(abs(s[i]))df_yudu = (np.max(s)) / pow((sum_size / 2000), 2) # 裕度因子print(f'峰值因子:%f' % df_fengzhi)print(f'波形因子:%f' % df_boxing)print(f'脉冲因子:%f' % df_maichong)print(f'峭度:%f' % df_kurt)print(f'裕度因子:%f' % df_yudu)print(f'最大值:%f' % df_max)print(f'均值:%f' % df_mean)print(f'均方根:%f' % df_rms)print(f'偏度:%f' % df_skew)print(f'标准差:%f' % df_std)print(f'Hi, process success!')def FFTConversion(path):xy = pd.read_csv(path, sep=', ') # 读取CSV文件s = []for each in list(xy):s.append(float(each))data_freq = np.fft.fft(s)m_data = np.abs(data_freq) # magnitude# p_data = np.angle(data_freq) # phaseplt.subplot(2, 1, 1)plt.plot(m_data, linewidth=0.5)# plt.subplot(2, 2, 2)# plt.plot(p_data, linewidth=0.5)plt.show()if __name__ == '__main__':WaveletDeNoising('F:/xxxx.txt') # 小波降噪WaveFiltering('F:/xxxx.txt') # 带通滤波TimeThresholdAnalysis('F:/xxxx.txt') # 时阈分析FFTConversion('F:/xxxx.txt') # FFT波形转换
利用python的强大函数库,实现波形的小波降噪、带通滤波、时阈分析、FFT波形转换相关推荐
- python带通滤波_python中的fft带通滤波器
值得注意的是,bp单位的大小不一定是以Hz为单位,而是取决于信号的采样频率,你应该使用 scipy.fftpack.fftfreq进行转换.此外,如果您的信号是真实的,您应该使用 scipy.fftp ...
- 利用python中的csv库读写csv文件
利用python中的csv库读写csv文件 python读写csv文件就我知道的方法有:1)利用csv库,2)利用读写txt文件的方式处理,3)利用numpy或pandas库处理 在这篇博客中,博主就 ...
- python调用C函数库
python调用C函数库 (2012-10-31 13:47:50) 转载▼ 标签: 动态链接库 c语言 so ctypes python 分类:Python 背景:工作中,有很多公共类库是使用C语言 ...
- Python的强大HTTP库:Requests
一.简介 requests 是一个使用广泛的Python库,专门用于处理HTTP请求.在requests的帮助下,开发者能够方便快捷地完成诸如发送GET/POST请求.处理Cookies和文件上传等常 ...
- 利用python来自己写一个服务器台账统计小工具
利用python来自己写一个服务器台账统计小工具 前言 无奈呀,压力创造成品 背景是这样的,相信在看的各位在管理服务器密码的时候,肯定会有个台账啥的,当然咱也有,但是吧,为了安全期间,不允许出现在服务 ...
- matlab自带函数缺少,matlab函数库缺失 我的matlab的自带的函数库貌似都没有了
matlab函数库缺失 我的matlab的自带的函数库貌似都没有了 mip版 关注:119 答案:4 悬赏:0 解决时间 2021-01-28 19:42 已解决 2021-01-28 03:1 ...
- matlab wdencmp函数,图像的小波阈值降噪_小波降噪函数 - 全文
小波降噪的方法有多种,如利用小波分解与重构的方法滤波降噪.利用小波变换模极大值的方法去噪.利用信号小波变换后空域相关性进行信噪分离.非线性小波阈值方法去噪.平移不变量小波降噪法,以及多小波降噪等等.归 ...
- 【Python气象绘图临摹】处理数据(上):读入输出nc数据、截取夏季/冬季数据、ButterWorth带通滤波、计算方差
前言 2022.9学习绘图 利用python进行气象绘图,本文为学习绘制期间记录笔记,分为上.下两部分:处理数据和图像绘制.处理数据流程:读入olr资料,截取夏季/冬季数据,进行10-30dButte ...
- 小波降噪与重构例子 python
原理讲解 傅里叶变换 关于傅里叶变换的基本概念在此我们就不再赘述了, 下面我们主要将傅里叶变换的不足.即我们知道傅里叶变化可以分析信号的频谱,那么为什么还要提出小波变换?答案"对非平稳过程, ...
最新文章
- 机房收费系统总结【5】——无用功
- qzone.class.php,PHP实现QQ空间自动回复说说的方法
- 记忆碎片 - 2015.09.11
- 团队-中国象棋-最终程序
- Epoll 的time_out参数引发的cpu占用问题
- Chrome插件GitZip(下载github项目中的部分文件)
- python3.4 安装numpy报错_python安装numpy报错怎么解决
- 两种办法解决外网资源下载速度过慢的问题
- 常用邮箱后缀总结,常用邮箱域名信息汇总
- 关于word中如何生成自动目录以及页码编排
- sublime中文乱码问题
- html 跑步比赛小游戏,跑步比赛小班游戏教案
- JS旋转木马图片轮播
- MySQL查询上周(从周一~周日)
- 道路中心线提取、河道中心线的提取(ArcScan)
- opencv改变图片大小,cv2.resize方法详解
- Java-MVC模式
- 更改WPS云文档保存位置
- 史玉柱: 我的成功不是偶然
- WHUT C语言计费(网吧)管理系统
热门文章
- 抖音直播公会常见的40个精选问题解读
- 计算机专业女生网名,说一说那些专业名字很霸气,但男女比例严重失调的专业...
- Python进阶的好途径——游戏开发
- 【Unity3D——UIFixedObj】用于跟随物体显示UI标签(如角色名、血条等)
- python 散点图 不同颜色_在matplotlib上的散点图中为每个系列设置不同的颜色
- java null转int_将String转换为int。如果String为null,则将int设置为0
- 大学教师沉迷开心农场 妻子纵火烧屋泄愤
- 在visio中将图片变成黑白,将图片对象进行颜色转换 彩色图转灰度图
- 网游,陈一舟的左勾拳
- js中的全局作用域和局部的作用域