基于micropython的数字滤波器

刚参加了昨天的硕士研究生考试,专业课考的信号与系统,报考学校今年出题出的有点偏,不是题型偏而是考察知识点有明显的偏重,简单说考纲里所罗列的考点最多只考了百分之三十,考系统输入输出方程的提有好几道,傅立叶的题好几道,考试前我特意巩固的离散系统没怎么考,拉普拉斯没怎么考,上场前画了个信号流熟悉了熟悉梅森公式热热身也没考,滤波器也没按正常套路考。。。。。总之今年专业课有点诡异。

不管怎样已经考完了过去了就不再去想了静待结果吧。

今天从实用的角度好好学习学习滤波器以及傅立叶变换,先搞滤波器。考前star了一个github的一个开源项目,关于数字滤波器代码实现的,源码地址绑定在文末阅读全文处。

首先向这位前辈大师表示敬重,最近一直在找相关的资料,在micropython社区发现了这位大师,他有很多基于micropython好玩有趣的开源代码,mark一下。

主要是基于micropython开发板的快速数字滤波器实现,开发板如图所示,板载STM32F405

数据采集过程中采集到数据往往不直接使用,而是经过一定的过滤以后才使用,原因是因为这些信号中包含了各种噪声,滤波的目的就是减少这些数据中的随机扰动,隔离特定的信号或者减小数据突变带来的异常响应。

通常减少噪音常用的方法有滑动取最后N个样本进行平均计算,这在计算上非常简单所以也很快,但这是比较粗糙的一种形式,因为N个样本中最老的样本与最新的样本具有同样的权重,这通常并不是最佳的。

还有就是FIR滤波器(有限长单位冲激响应滤波器,又称为非递归型滤波器),这个滤波方法可以看作滑动平均的延伸,相比滑动平均值滤波,该方法对每一个样本分配了不同的权重,这些权重由一组数组定义,计算时,每个样本乘以其系数,然后在对他们求和。FIR滤波器可以设计成产生一系列滤波器类型:低通,高通,带通,带阻等。它们也可以被定制为对突然变化(脉冲响应)产生特定的响应。

该项目代码里滤波器用于处理单片机实时采集的数据(整数数据),耗时很短可以用在中断程序里。主要实现了上述两种滤波器.计算对象是32位有符号整形,在micropython开发板中,滑动平均需要8微秒,FIR需要15微秒来获得一组典型系数。

里面一共有8个后缀名为py的python代码文件。

第一个asm.py是一个演示文件,演示了汇编语言在micropython中的使用

第二个avg.py和第三个avgtest.py是滑动平均滤波的代码实现以及实例代码

后面全是fir滤波器的代码实现以及多个实例代码。

文件lpf.py使用该板作为截止频率为40Hz的低通滤波器。它处理X7引脚上的模拟输入,对其进行滤波,并将结果输出到DAC2(X6)。为了方便起见,代码包含一个DAC1(X5)输出的扫频振荡器。通过连接X5和X7,可以在X6上查看过滤结果。

滤波器使用定时器4以2KHz采样输入数据。 该程序在DAC1上产生扫频正弦波,并使用X7引脚上的ADC进行读取。经过滤波的信号在DAC2上输出。输入信号以定时器4的2KHz采样,FIR滤波器在定时器的回调处理程序中运行。

当使用振荡器测试滤波器时,您可能会看到阻带中偶然发生的瞬变现象。这些是由振荡器频率的阶跃变化引起的瞬态频率成分的结果:这可以通过增加频率变化之间的延迟来证明。理想情况下,振荡器会发出一个缓慢的,连续的扫描。

firtest.py说明了FIR操作,并用不同的系数集来计算执行时间。

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能头条

TensorFlow 发布新版本v1.9(附应用实践教程)

【人工智能头条导读】TensorFlow 是一个开放源代码软件库,用于进行高性能数值计算。借助灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU...

763
来自专栏机器之心

教程 | 强化学习训练Chrome小恐龙Dino Run:最高超过4000分

1.2K3
来自专栏机器学习算法与Python学习

KNN算法实战-改进约会网站配对效果

kNN实战之改进约会网站配对效果 引言 简单的说,KNN算法采用测量不同特征值之间的距离方法进行分类。工作原理:存在一个样本数据集,即训练数据集,并且样本集中每...

56410
来自专栏AI科技大本营的专栏

如何通过深度学习轻松实现自动化监控?

【导读】这是一篇关于使用基于深度学习的目标检测来实现监控系统的快速教程。在教程中通过使用 GPU 多处理器来比较不同目标检测模型在行人检测上的性能。

1125
来自专栏新智元

旧照片着色修复神器!自注意力GAN效果惊艳

图像着色、图像增强、恢复旧图像等是计算机视觉领域的热点问题,不过,用一个模型很好地实现多个任务的研究不多。

951
来自专栏人人都是极客

教程 | 基于计算机视觉使用Python和OpenCV计算道路交通

本文介绍了不使用复杂的深度学习算法计算道路交通的方法。该方法基于计算机视觉,仅使用 Python 和 OpenCV,在背景提取算法的帮助下,使用简单的移动侦测来...

5846
来自专栏程序生活

空间向量模型和tf-idf向量空间模型tf-idf

向量空间模型 向量空间模型是一个把文本文件表示为标识符(比如索引)向量的代数模型,它应用于信息过滤、信息检索、索引以及相关排序。 1 定义 文档和查询都用向量来...

4333
来自专栏数据小魔方

excel数据分析库系列|抽样设计

今天开始跟大家分享excel数据分析库系列——抽样设计! 作为微软excel中一直以来隐藏的最深最上档次的功能组件,excel数据分析工具库需要用户手动调用并开...

3597
来自专栏量子位

深度学习动手入门:GitHub上四个超棒的TensorFlow开源项目

问耕 编译自 Source Dexter 量子位 出品 | 公众号 QbitAI 作者简介:akshay pai,数据科学工程师,热爱研究机器学习问题。Sour...

5599
来自专栏ArrayZoneYour的专栏

周期序预测列问题中的朴素模型——周期跟随模型(Seasonal Persistence)

在处理时间序列问题时,人们通常使用跟随算法(将前一个时间单位的观测值作为当前时间的预测值)预测的结果作为预测性能的基准。

2427

扫码关注云+社区

领取腾讯云代金券