Python简单实现数据降噪滤波处理_滢泷版
Python简单实现数据降噪、滤波处理_滢泷版
由于项目需要对数据进行降噪滤波处理,又要尽可能保证变化特征不失真。
我在网上搜索了一下Python的方库,没找到。
我安装了scipy 之后找不到spline方法,也就知道怎么用了。
顺便说一下, 本人不算是很专业Python编程员,只是看过马哥的公开课 Python基础入门 就开始应对项目了。 所以对于高级库 完全是用到了才去搜索 有没有、怎么用。
在这种情况下,只能自己解决了。所以就简单实现了一下,效果不错(个人感觉)就贴出来万一有人瞧得上就看一眼吧
实现原理
利用前一帧和后一帧的值来校准当前帧的值
就是 第10帧的输出值 等于 第九帧和第11帧的平均值 再跟第10帧的值求平均
简单一次的处理效果很差,所以需要叠加处理多次,具体需要多少次要看想要的效果。
代码示例
方法和变量名称取得是在随意,请莫见怪。需要时自己美化修改就好
'''
假定待处理数据中有三个元素 x、y、z 代码就是如下写法,可根据具需要加减
n 是指定需要做几层处理 传入正整数即可,最少处理一层
xyzls 是每层处理用来寄存原值的列表集合
ax、ay、az 是传入当前待处理的值
'''
def ddenoise(xyzls, ax, ay, az, n):#直接进行滤波处理拿到结果bx = sum([xyzls[0][-2][0], ax, xyzls[0][-1][0], xyzls[0][-1][0]]) / 4by = sum([xyzls[0][-2][1], ay, xyzls[0][-1][1], xyzls[0][-1][1]]) / 4bz = sum([xyzls[0][-2][2], az, xyzls[0][-1][2], xyzls[0][-1][2]]) / 4#本次计算完成更新寄存队列xyz = [ax, ay, az]xyzls[0].pop(0)xyzls[0].append(xyz)#定义输出内容outl = [bx, by, bz]n -= 1if 0 < n: #判断是否需要再次处理#叠加处理,切片生成新的寄存器集合,然后自我调用xyzls2 = xyzls[1:]outl = ddenoise(xyzls2, bx, by, bz, n)return outl'''
下面演示 待处理数据是csv格式时,怎么使用上面的方法
假定CSV文件首行是 首部标注,第一列是横向坐标
'''
#定义一个方法用来初始化环境和调用方法处理数据,输入需要 以行为元素的 数据列表 ,和处理深度数
def csv_denoise(in_csv, n):#防止输入格式和值不合规,进行简单加工n = int(n)if 1 > n:n = 1#开始准备寄存队列等环境处理bx = int(in_csv[0].split(',')[1])by = int(in_csv[0].split(',')[2])bz = int(in_csv[0].split(',')[3])names = locals()xyzls = []for i in range(n):in_csv.append(in_csv[-1]) #此方法输出结果会滞后一帧/每层,所以需要扩充数据长度names['xyzl%s' % i] = [[bx, by, bz], [bx, by, bz]] #准备每层的初始寄存数据xyzls.append(names['xyzl%s' % i]) #打包寄存队列到集合方便传递调用prnu = n #为了去除前期的无效输出,保证输入跟输出的长度一样t1 = 0 #为了同时对其输出第一列内容做准备for s1 in in_csv:ax = int(s1.split(',')[1])ay = int(s1.split(',')[2])az = int(s1.split(',')[3])bx, by, bz = ddenoise(xyzls, ax, ay, az, n)if 0 >= prnu: #为了去除前期的无效输出,保证输入跟输出的长度一样print(in_csv[t1].split(',')[0], bx, by, bz)t1 += 1 #为了同时对其输出第一列内容同步else:prnu -= 1 #为了去除前期的无效输出,保证输入跟输出的长度一样if __name__ == '__main__':import ospath = 'csv_dir'filename = 'test.csv'filepath = os.path.join(path, filename)f = open(filepath, 'r')ocsv = f.readlines()[1:] #读取csv文件,去除首行f.close()csv_denoise(ocsv, 7) #由于本次演示结果输出直接打印显示数值,所以不用接收返回值
效果展示
处理壹层效果展示
处理四层效果展示
处理七层效果展示
处理三十层效果展示
谢谢观看。如有幸有人需要转发或借鉴 请注明原文链接
Python简单实现数据降噪滤波处理_滢泷版相关推荐
- python写入excel表格数据绘制图表_(原创)xlsxwriter,python excel 写入数据\图表等操作_图表操作(二)...
前面分享了使用xlsxwriter创建excel和写入数据GUC:(原创)xlsxwriter,python excel 写入数据\图表等操作_创建.写入(一)zhuanlan.zhihu.com ...
- 复习Java第一个项目学生信息管理系统 04(权限管理和动态挂菜单功能) python简单爬数据实例Java面试题三次握手和四次挥手生活【记录一个咸鱼大学生三个月的奋进生活】016
记录一个咸鱼大学生三个月的奋进生活016 复习Java(学生信息管理系统04权限管理和动态挂菜单功能) 改写MainFrame的构造方法 新增LoginFrame的验证登录是否成功的代码 新增Logi ...
- 用python玩转数据第一周答案_用Python玩转数据_答案
用Python玩转数据_答案 答案: 更多相关问题 求由参数方程所确定的函数y=y(x)的二阶导数 已知数列的通项公式,则取最小值时=,此时=. (本小题满分10分)已知是等差数列,其中](1)求的通 ...
- 用python玩转数据第四周答案_用Python玩转数据_答案公众号
用Python玩转数据_答案公众号 更多相关问题 隧道式一次发酵设备投资很少().隔音符号一般加在哪些字母开头的拼音上?隧道洞口工程包括石方开挖.洞口防护与排水工程.洞门建筑的制作.安装.明洞工程.( ...
- 用python玩转数据第四周答案_大学mooc用Python玩转数据答案搜题公众号
大学mooc用Python玩转数据答案搜题公众号 更多相关问题 不寐多梦,易于惊醒,胆怯心悸,气短倦怠,小便清长,舌淡,脉弦细.治疗主方为 "以痛为腧"这一名词首载于 先指出&qu ...
- python gui界面设置数据储存在哪里_我整理的一些常用Python库!让你快速记住这些库的用法!建议收藏...
Python的一大特色是其丰富的模块,基本上只要你能想到的常见的开发需求,都能找到别人已经实现的库直接使用,或者相关工具或则框架来辅助实现.但这对于新人来说也是一个问题:这么多库,我要从哪里学起?怎样 ...
- python金融大数据分析师工资待遇_三年工作经验大佬带你解读 Python金融大数据分析...
内容提要: Python凭借其简单.易读.可扩展性以及拥有巨大而活跃的科学计算社区,在需要分析.处理大量数据的金融行业得到了广泛而迅速的应用,并且成为该行业开发核心应用的首选编程语言.本书提供了使用P ...
- python类的数据成员和成员方法_静态方法和类成员方法(Python)
静态方法和成员方法分别在创建时分别被装入Staticmethod 类型和 Classmethod类型的对象中.静态方法的定义没有 self参数,且能够被类本身直接调用,类方法在定义时需要名为 cls的 ...
- python爬虫的数据如何解决乱码_写爬虫时如何解决网页乱码问题
实战讲解,文章较长,对爬虫比较熟悉的浏览翻看章节 2.3 获取新闻文本内容. 写爬虫时经常对网址发起请求,结果返回的html数据除了标签能看懂,其他的全部是乱码.大家如果对爬虫感兴趣,请耐心阅读本文, ...
最新文章
- GitHub怎样fork别人代码到自己仓库并进行贡献
- 李飞飞团队最新研究 :「四步」AI方案助老人抵抗新冠肺炎,联合学习降低个人隐私风险
- HDU2019 数列有序
- 《Accelerated C++中文版》--- 读书笔记
- idea war包和jar包区别 以及用maven如何打包
- Git 学习笔记--git 查看某个文件的修改历史
- Redis的常见实际应用,不仅仅是缓存(转)
- mysql innodb monitor_mysql:innodb monitor(show engine innodb status)探秘
- openlayers5之view缩放定位
- 计算机科学导论有关论文,计算机科学导论论文
- 金蝶Cloud取物料最后一次采购入库价格
- 世纪互联评测至强5500 总结云平台经验
- 歌剧《猫》的经典唱段《memory》中英文对照
- 基于LSTM三分类的文本情感分析,采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种
- 软件界面交互式设计注意事项
- 給windowsXP穿上Linux Ubuntu的漂亮馬甲
- 码字 层映射 预编码的概念总结
- LIMIT 10000,10会发生什么?
- 【机器学习实验五】基于多分类线性SVM实现简易人机猜拳游戏
- C:\KEIL\C51\intrins.h包含不正确的路径。Keil 头文件路径错误
热门文章
- 移动OA助力企业提高合同管理水平
- Android 超简单音乐播放器(十)歌词的实现
- el-select多选全选
- 简报 | 俄罗斯下议院计划年底通过加密货币监管法案
- java飞机场模拟程序_java 飞机大战 小游戏源码
- 第一范式(1NF)、第二范式(2NF)和第三范式(3NF)
- 5G射频IC产业商机无限
- 华为onu 调为交换机_华为MA5626配置成普通交换机的完整方法
- 【产业互联网周报】网易悄然上架网易会议App;阿里推出阿里云网盘App;腾讯云会展发布 “1+3易服务”体系...
- 最新《网易云课堂Java入门课程》