用python实现简单的数字信号软件滤波处理
做嵌入式开发,经常需要通过逻辑分析仪对数字信号进行数据分析。如果信号源附近有强干扰源,并且逻辑分析仪滤波效果不好的话,获取到的数字信号,经常带有一些“毛刺”,这些“毛刺”信号根据干扰的强弱不同,持续时间可能会由几纳秒到几百纳秒不等。尝试过在数字口加电容进行硬件滤波,电容加得太小,滤波不干净;电容加得太大,信号失真严重。
通过观察逻辑分析仪获取到的波形可以看到,干扰信号一般是在信号跳变之后的一小段时间内出现(这是我所遇到的信号的情况),如下图1所示信号由低变成高,2us内,都是干扰信号。实际上前面2 us内的电平信号应该是高电平。软件滤波的目的,就是要将干扰信号还原成它原来的电平。

先将逻辑分析仪获取到的数据,转成csv格式的文件,命名为src_data.csv。src_data.csv 文件记录的是每个信号跳变瞬间的时间和对应的电平状态(0或1),如下图2为src_data.csv的格式。

如果没有逻辑分析仪,也可以通过将其他途径获取到的数据,以类似的格式保存。
实现算法:
1. 将信号产生的时间,转换成统一的计时单位。
2. 截取每一个信号周期内高电平和低电平所占的时间。并按照信号产生的顺序,依次存放在同一个列表(信号描述表)中。
3. 遍历一遍信号描述列表,把小于xxns的低电平都认为是干扰信号。把这个低电平持续的时间,加到上一个高电平持续的时间里,并把这个低电平从列表中去掉。
4. 遍历一遍信号描述表,把可能连续出现的连续相同电平合并。此时,信号描述表中的元素,都是按照高低高低这样的排列。
源码地址如下:https://git.oschina.net/liujiangyi123/digital_signal_filter/blob/master/digital_signal_filtering.py
用python实现简单的数字信号软件滤波处理的更多相关文章
- python练习四—简单的聊天软件
python最强大的是什么?库支持!!有了强大的库支持,一个简单的聊天软件实现就更简单了,本项目思路如下 # 项目思路 1. 服务器的工作 * 初始化服务器 * 新建一个聊天房间 * 维护一个已链接用 ...
- python 的排名,已经python的简单介绍
我在今天看了一篇文章,是简书的全网程序猿写的,Java已经退出神坛,python稳居第一. python是由龟叔写的,它在英文的意思是蟒蛇. 根据编程语言流行指数排行榜2019年2月的榜单 据了解,目 ...
- [开发技巧]·Python极简实现滑动平均滤波(基于Numpy.convolve)
[开发技巧]·Python极简实现滑动平均滤波(基于Numpy.convolve) 1.滑动平均概念 滑动平均滤波法(又称递推平均滤波法),时把连续取N个采样值看成一个队列 ,队列的长度固定为N ...
- 用Python实现的Internet电话软件(P2P-SIP)<开源>
本博客为本人学习笔记,代码出自GitHub:https://github.com/theintencity/p2p-sip 由于GitHub原著为英文,且相当的啰嗦,本文为翻译内容并去除其啰嗦的部分 ...
- 用Python搭建简单的HTTP服务 · Zhangxu's Blog
分享一个快速用Python搭建简单的HTTP服务的方法. 平时我们可能有需要,传输某个文件到手机,或者工作中某台服务器的电脑. 假如这个手机是个测试手机/服务器,并没有微信QQ之类的软件,而且你也不想 ...
- Python 实现简单的 Web
简单的学了下Python, 然后用Python实现简单的Web. 因为正在学习计算机网络,所以通过编程来加强自己对于Http协议和Web服务器的理解,也理解下如何实现Web服务请求.响应.错误处理以及 ...
- 用 python实现简单EXCEL数据统计
任务: 用python时间简单的统计任务-统计男性和女性分别有多少人. 用到的物料:xlrd 它的作用-读取excel表数据 代码: import xlrd workbook = xlrd.open_ ...
- python开启简单webserver
python开启简单webserver linux下面使用 python -m SimpleHTTPServer 8000 windows下面使用上面的命令会报错,Python.Exe: No Mod ...
- Python开发简单爬虫 - 慕课网
课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序 课程目录 第1章 课程介绍 ...
随机推荐
- WordPress中函数钩子hook的作用及基本用法
WordPress 的插件机制实际上只的就是这个 Hook 了,它中文被翻译成钩子,允许你参与 WordPress 核心的运行,是一个非常棒的东西,下面我们来详细了解一下它.钩子分类 钩子分为两种,一 ...
- Linux(7)chmod解析
在UNIX和Linux的操作系统中, 每个文件(文件夹也被看作是文件)都按读, 写, 运行设定权限 比如用ls -l或ll命令列文件表时, 得到如下输出: -rw-r--r-- 1 apple use ...
- mk-js,一个基于react、nodejs的全栈框架
前言 在这个前端技术爆炸的时代,不自己写套开源框架出门都不好意思跟别人说自己搞前端.去年年初接触的react,16年7月份在github开源了一套针对react.redux探索的项目,近期和伙伴们一起 ...
- Abp(.NetCore)开发与发布过程3-部署Ubuntu站点
以下是笔者在 Ubuntu 16.0-64bit 环境下 发布 ABP(.NetCore)的全过程.特此记录,希望对大家有所帮助. 准备的工具 1.PuTTY(ssh,如果不想每次都用阿里云的远程登录 ...
- 使用Travis CI自动部署Hexo博客
自从使用GitHub Pages和Hexo来发布博客之后,不得不说方便了许多,只需要几个简单的命令博客就发布了.但在不断的使用中发现每次的发布操作也挺耗时的. 我一般的操作是将平时整理好的md文件放到 ...
- 【待整理】MySQL alter table modify vs alter table add产生state不一样
MySQL:5.6.35 OS:redhat5.8 今天更新数据库某些表字段,有如下两SQL: ①alter table xx modify xxxx;(表大概是77w) ②alter table s ...
- 基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统
很久没更新博客,最近也有点忙,然后业余时间搞了一个比较完整基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统的流程系统,希望对 ...
- 从源码理解Spring原理,并用代码实现简易Spring框架
前言(本文为原创,转载请注明出处) 个人之前对于框架的学习,就停留在配置,使用阶段.说实话过段时间就会忘得荡然无存.也不知道框架的运行逻辑,就是知道添加个注解,就可以用了. 由于实习,时间比较多,也感 ...
- C/C++ 知识点---排序实现
1.冒泡排序冒泡排序是O(N^2)复杂度的排序算法,效率较低,需要N趟遍历,每次将候选集中最小的数通过交换浮到最上面: template <typename Type> void Bubb ...
- Get host name and port(Object-c)
/************************************************************************** @param pChHostName: [out ...