背景知识视频教程

使用ARM Mbed平台的嵌入式系统​viadean.com

ARM mbed OS入门 - viadean​viadean.com

ARM mBed 教程 - viadean​viadean.com

信号处理对于许多应用而言很重要。 借助现代计算机的强大功能,许多信号处理功能现在都可以通过数字方式完成。 本文,我们将说明如何使用Arm Mbed -DSP库进行数字信号处理和控制。

低通滤波器

在Arm Mbed 网站上,有关于如何设计和实现低通FIR(有限脉冲响应)滤波器的出色教程。 我们基本上将遵循该示例,并将其扩展到高通滤波器和带通/停止滤波器。

首先,我们需要使用MATLAB软件(http://www.mathworks.com)创建数字滤波器。 数字滤波器设计是一个复杂的主题,因为它涉及复杂的数学运算。 MATLAB有一个信号处理工具箱,可以使数字滤波器的设计更加简单。 FIR(有限脉冲响应)滤波器和IIR(无限脉冲响应)滤波器是常用的数字滤波器。 这里使用FIR滤波器,因为它不需要反馈环路并且更稳定。

以下是MATLAB代码,该代码使用“ fir1”函数创建了低通滤波器。 采样率为48,000 Hz,奈奎斯特频率为采样频率24,000 Hz的一半,截止频率为6000 Hz。 “ fir1”功能在归一化的频率范围(0到1)中创建一个28阶数字滤波器,其中1代表奈奎斯特频率,即24,000 Hz。 因此,归一化的截止频率将为6000 / 24,000 = –¼,或0.25。

下图显示了FIR低通滤波器及其29个(+1阶)系数。 现在,我们可以在mbed程序中使用这些系数来实现低通数字滤波器。

fir_coeff =-0.0018 -0.0016 0.0000 0.0037 0.0081 0.0085 -0.0000 -0.0174-0.0341 -0.0334 0.0000 0.0676 0.1522 0.2229 0.2505 0.22290.1522 0.0676 0.0000 -0.0334 -0.0341 -0.0174 -0.0000 0.00850.0081 0.0037 0.0000 -0.0016 -0.0018
fir_coeff =-0.0018 -0.0016 0.0000 0.0037 0.0081 0.0085 -0.0000 -0.0174-0.0341 -0.0334 0.0000 0.0676 0.1522 0.2229 0.2505 0.22290.1522 0.0676 0.0000 -0.0334 -0.0341 -0.0174 -0.0000 0.00850.0081 0.0037 0.0000 -0.0016 -0.0018
fir_coeff =-0.0018 -0.0016 0.0000 0.0037 0.0081 0.0085 -0.0000 -0.0174-0.0341 -0.0334 0.0000 0.0676 0.1522 0.2229 0.2505 0.22290.1522 0.0676 0.0000 -0.0334 -0.0341 -0.0174 -0.0000 0.00850.0081 0.0037 0.0000 -0.0016 -0.0018
fir_coeff =-0.0018 -0.0016 0.0000 0.0037 0.0081 0.0085 -0.0000 -0.0174-0.0341 -0.0334 0.0000 0.0676 0.1522 0.2229 0.2505 0.22290.1522 0.0676 0.0000 -0.0334 -0.0341 -0.0174 -0.0000 0.00850.0081 0.0037 0.0000 -0.0016 -0.0018
fir_coeff =-0.0018 -0.0016 0.0000 0.0037 0.0081 0.0085 -0.0000 -0.0174-0.0341 -0.0334 0.0000 0.0676 0.1522 0.2229 0.2505 0.22290.1522 0.0676 0.0000 -0.0334 -0.0341 -0.0174 -0.0000 0.00850.0081 0.0037 0.0000 -0.0016 -0.0018

以下是使用上述FIR低通滤波器系数的mbed示例。 它首先使用1000 Hz正弦波和15,000 Hz正弦波生成混合信号(32×20点),然后使用FIR低通滤波器滤除15,000 Hz。 最后,它通过虚拟COM端口将原始信号和滤波后的信号打印到计算机上。 在下图中,滤波后的信号上移了3 V,因此我们可以分别查看两个信号。

在此程序中,您将需要mbed-DSP库

下图显示了使用Arduino串行绘图仪的程序输出,原始混合信号在底部,滤波后的信号在顶部。 如我们所见,经过滤波后,仅剩下1000 Hz信号。

高通滤波器

下图显示了相应的FIR高通滤波器及其29个(+1阶)系数。 现在,我们可以在mbed程序中使用这些系数来实现低通数字滤波器。

fir_coeff =0.0018 0.0016 -0.0000 -0.0037 -0.0080 -0.0085 -0.0000 0.01730.0340 0.0332 -0.0000 -0.0674 -0.1516 -0.2221 0.7487 -0.2221-0.1516 -0.0674 -0.0000 0.0332 0.0340 0.0173 -0.0000 -0.0085-0.0080 -0.0037 -0.0000 0.0016 0.0018
fir_coeff =0.0018 0.0016 -0.0000 -0.0037 -0.0080 -0.0085 -0.0000 0.01730.0340 0.0332 -0.0000 -0.0674 -0.1516 -0.2221 0.7487 -0.2221-0.1516 -0.0674 -0.0000 0.0332 0.0340 0.0173 -0.0000 -0.0085-0.0080 -0.0037 -0.0000 0.0016 0.0018
fir_coeff =0.0018 0.0016 -0.0000 -0.0037 -0.0080 -0.0085 -0.0000 0.01730.0340 0.0332 -0.0000 -0.0674 -0.1516 -0.2221 0.7487 -0.2221-0.1516 -0.0674 -0.0000 0.0332 0.0340 0.0173 -0.0000 -0.0085-0.0080 -0.0037 -0.0000 0.0016 0.0018
fir_coeff =0.0018 0.0016 -0.0000 -0.0037 -0.0080 -0.0085 -0.0000 0.01730.0340 0.0332 -0.0000 -0.0674 -0.1516 -0.2221 0.7487 -0.2221-0.1516 -0.0674 -0.0000 0.0332 0.0340 0.0173 -0.0000 -0.0085-0.0080 -0.0037 -0.0000 0.0016 0.0018
fir_coeff =0.0018 0.0016 -0.0000 -0.0037 -0.0080 -0.0085 -0.0000 0.01730.0340 0.0332 -0.0000 -0.0674 -0.1516 -0.2221 0.7487 -0.2221-0.1516 -0.0674 -0.0000 0.0332 0.0340 0.0173 -0.0000 -0.0085-0.0080 -0.0037 -0.0000 0.0016 0.0018

修改上述C程序,并使用新值更改FIR系数,如下所示。

下图显示了使用Arduino串行绘图仪的程序输出,原始混合信号在底部,滤波后的信号在顶部。 正如我们这次看到的,经过滤波后,仅剩下15,000 Hz的信号。

带通滤波器

对于带通滤波器,修改上述MATLAB代码,在这种情况下,仅允许通过0.5×24,000(12,000 Hz)到0.7×24,000(16,800 Hz)之间的频率。 其他频率被阻止。 下图显示了相应的FIR带通滤波器及其29个(+1阶)系数。

现在,我们可以在mbed程序中使用这些系数来实现带通数字滤波器。

fir_coeff =-0.0011 -0.0030 0.0033 0.0010 0.0000 -0.0024 -0.0171 0.03320.0207 -0.0974 0.0400 0.1292 -0.1494 -0.0622 0.2069 -0.0622-0.1494 0.1292 0.0400 -0.0974 0.0207 0.0332 -0.0171 -0.00240.0000 0.0010 0.0033 -0.0030 -0.0011
fir_coeff =-0.0011 -0.0030 0.0033 0.0010 0.0000 -0.0024 -0.0171 0.03320.0207 -0.0974 0.0400 0.1292 -0.1494 -0.0622 0.2069 -0.0622-0.1494 0.1292 0.0400 -0.0974 0.0207 0.0332 -0.0171 -0.00240.0000 0.0010 0.0033 -0.0030 -0.0011
fir_coeff =-0.0011 -0.0030 0.0033 0.0010 0.0000 -0.0024 -0.0171 0.03320.0207 -0.0974 0.0400 0.1292 -0.1494 -0.0622 0.2069 -0.0622-0.1494 0.1292 0.0400 -0.0974 0.0207 0.0332 -0.0171 -0.00240.0000 0.0010 0.0033 -0.0030 -0.0011
fir_coeff =-0.0011 -0.0030 0.0033 0.0010 0.0000 -0.0024 -0.0171 0.03320.0207 -0.0974 0.0400 0.1292 -0.1494 -0.0622 0.2069 -0.0622-0.1494 0.1292 0.0400 -0.0974 0.0207 0.0332 -0.0171 -0.00240.0000 0.0010 0.0033 -0.0030 -0.0011
fir_coeff =-0.0011 -0.0030 0.0033 0.0010 0.0000 -0.0024 -0.0171 0.03320.0207 -0.0974 0.0400 0.1292 -0.1494 -0.0622 0.2069 -0.0622-0.1494 0.1292 0.0400 -0.0974 0.0207 0.0332 -0.0171 -0.00240.0000 0.0010 0.0033 -0.0030 -0.0011

修改上例,并使用新值更改FIR系数,如下所示

下图显示了使用Arduino串行绘图仪的程序输出,原始混合信号在底部,滤波后的信号在顶部。 正如我们这次看到的那样,经过带通滤波后,仅剩下15,000 Hz的信号。

带阻滤波器和陷波滤波器

对于带阻滤波器,请修改上述 MATLAB代码,并将“ fir1”功能行,在这种情况下,将阻止0.5×24,000(12,000 Hz)到0.7×24000(16,800 Hz)之间的频率,并允许使用其他频率。 当频带变得足够窄时,带阻滤波器将变成陷波滤波器。

fir_coeff =0.0011 0.0029 -0.0032 -0.0010 -0.0000 0.0023 0.0165 -0.0320-0.0200 0.0939 -0.0385 -0.1245 0.1440 0.0599 0.7974 0.05990.1440 -0.1245 -0.0385 0.0939 -0.0200 -0.0320 0.0165 0.0023-0.0000 -0.0010 -0.0032 0.0029 0.0011
fir_coeff =0.0011 0.0029 -0.0032 -0.0010 -0.0000 0.0023 0.0165 -0.0320-0.0200 0.0939 -0.0385 -0.1245 0.1440 0.0599 0.7974 0.05990.1440 -0.1245 -0.0385 0.0939 -0.0200 -0.0320 0.0165 0.0023-0.0000 -0.0010 -0.0032 0.0029 0.0011
fir_coeff =0.0011 0.0029 -0.0032 -0.0010 -0.0000 0.0023 0.0165 -0.0320-0.0200 0.0939 -0.0385 -0.1245 0.1440 0.0599 0.7974 0.05990.1440 -0.1245 -0.0385 0.0939 -0.0200 -0.0320 0.0165 0.0023-0.0000 -0.0010 -0.0032 0.0029 0.0011
fir_coeff =0.0011 0.0029 -0.0032 -0.0010 -0.0000 0.0023 0.0165 -0.0320-0.0200 0.0939 -0.0385 -0.1245 0.1440 0.0599 0.7974 0.05990.1440 -0.1245 -0.0385 0.0939 -0.0200 -0.0320 0.0165 0.0023-0.0000 -0.0010 -0.0032 0.0029 0.0011
fir_coeff =0.0011 0.0029 -0.0032 -0.0010 -0.0000 0.0023 0.0165 -0.0320-0.0200 0.0939 -0.0385 -0.1245 0.1440 0.0599 0.7974 0.05990.1440 -0.1245 -0.0385 0.0939 -0.0200 -0.0320 0.0165 0.0023-0.0000 -0.0010 -0.0032 0.0029 0.0011

下图显示了相应的FIR带阻滤波器及其29个系数,可在mbed程序中使用它们来实现带阻数字滤波器。

修改上述示例,并使用新值更改FIR系数,如下所示

下图显示了使用Arduino串行绘图仪的程序输出,原始混合信号在底部,滤波后的信号在顶部。 我们可以看到,滤波之后,停止了15,000 Hz信号,仅剩下1000 Hz信号。

快速傅立叶变换(FFT)

快速傅立叶变换(FFT)和逆FFT具有许多重要的应用。 在本节中,我们将展示如何使用mbed-DSP库执行FFT和逆FFT:

以下示例说明了如何使用“ arm_cfft_f32()”执行复杂的FFT。 “ arm_cfft_f32()”函数只能用于[16、32、64,…,4096]的数据长度,但可以同时用于FFT和逆FFT。 检查mbed-DSP库以获取功能的详细信息。

程序首先根据FFT长度(FFT_LEN)创建并初始化复数FFT实例S,在这种情况下为512点。 然后,它使用“ sin()”函数(30 Hz和100 Hz)生成混合频率信号,采样时间dt = 0.001秒; 因此,采样频率为Fmax = 1 / dt = 1000Hz,Nyquest频率为Fmax / 2 = 500Hz。 当我们要使用实信号时,我们将虚分量设置为零。 它还同时通过虚拟COM将原始混合信号打印到计算机。 然后,它将程序暂停5秒钟。 最后,它调用“ arm_cfft_f32()”以执行复杂的FFT,并调用“ arm_cmplx_mag_f32()”以计算变换后的信号的幅度,并通过虚拟COM将FFT变换信号的幅度打印到计算机。

参阅

ARM Mbed数字信号处理 - viadean​viadean.com

利用matlab程序分别设计一正弦型信号_ARM Mbed数字信号处理相关推荐

  1. 利用matlab程序分别设计一正弦型信号_【电力电子】【2013.06】【含源码】永磁同步电动机三相逆变器的设计...

    本文为芬兰赫尔辛基应用科学大学(作者:Lars Dautermann)的学士论文,共63页. 本论文的目的是为方程式大赛学生(Formula Student)的电动汽车提供一个三相逆变器.设计逆变器是 ...

  2. 热传递 matlab,利用matlab程序解决热传导问题

    利用matlab程序解决热传导问题 1哈佛大学能源与环境学院课程作业报告作业名称:传热学大作业--利用 matlab 程序解决热传导问题院系:能源与环境学院专业:建筑环境与设备工程学号:5201314 ...

  3. 单闭环调速仿真matlab,利用Matlab仿真平台设计单闭环直流调速系统

    内容简介: 毕业论文 利用Matlab仿真平台设计单闭环直流调速系统 共21页,3989字. 目 录 一.摘要 --------------------------2 二.总体方案设计 ------- ...

  4. 利用matlab程序自动生成feko近场云图及matlab程序实现自动化feko运行

    Feko是一款非常实用的电磁仿真软件,目前许多研究的验证及数据的制作都需要借助Feko来实现.但是对于刚入门的同学来说,feko的数据获取比较麻烦,需要在每一次运行结束后手动调节参数再执行下一个运行程 ...

  5. matlab程序动画设计,Matlab动画制作(一)——电影动画

    电影动画的好处就是,运行一次可以多次播放,甚至可以直接生成avi文件,直接独立与Matlab环境播放.这是其它三种动画制作方法所不具备的. MATLAB中,创建电影动画的过程分为以下四步: step1 ...

  6. cmi码型变换matlab程序_实验四 码型变换实验.doc

    实验四 码型变换实验 一.实验要求 1.了解几种常见的数字基带信号. 2.掌握常用数字基带传输码型的编码规则. 3.掌握用FPGA实现码型变换的方法. 二.实验内容 1.观察NRZ码.RZ码.BRZ码 ...

  7. matlab有扰动量仿真动态响应,利用Matlab仿真平台设计双闭环直流调速系统

    1 设计任务及要求 1.已知条件: 某晶闸管供电的双闭环直流调速系统,整流装置采用三相桥式电路,基本数据如下: 直流电动机:220V .136A .1460r/min ,Ce=0.132 min/r ...

  8. 用MATLAB编程正弦稳态相量图,matlab课程设计--利用MATLAB对线性电路正弦稳态特性分析...

    matlab课程设计--利用MATLAB对线性电路正弦稳态特性分析 课程设计任务书 学生姓名: 专业班级: 指导教师: 刘 新 华 工作单位:信息工程学院 题 目: 利用MATLAB对线性电路正弦稳态 ...

  9. 数字信号处理matlab设计滤波器

    目 录 1  设计目的.内容及要求 1 1.1 设计目的 1 1.2 设计内容 1 1.3 设计思考 2 1.4 设计要求 2 2 设计方案与设计原理 3 2.1 设计思路 3 2.2 采样定理 3 ...

最新文章

  1. 微软语音扩展全球语言支持,发布160个新声音
  2. 2019年春季学期第4周作业.
  3. sequelize的应用
  4. OpenCV中Mat的属性
  5. 2022新年重磅技术分享|深入理解Linux操作系统
  6. java常用的搜索引擎_我掏空了各大搜索引擎,给你整理了154道Java面试题!
  7. 测试开发之软件测试模型
  8. andriod之配置文件保存与读取
  9. 辰信领创:下一代信息安全是认知安全
  10. 半导体物理学习札记1
  11. 网站如何防盗链的8种方法
  12. 计算机中MAX函数是求什么,MAX函数
  13. 基于机器学习进行销售预测分析
  14. 论文阅读——基于语法语义融合学习的功能代码克隆检测
  15. python人工智能思想_从零开始学人工智能(1)--Python · 神经网络(零)
  16. 超50万人推荐的神奇兼实用App,个个精品,打死也不能错过
  17. 新生儿喝奶后不要马上放回床上睡觉,为宝宝健康着想,先做1件事
  18. ChemDraw如何画聚合物,看完就知道了!
  19. centos9 intel集显直通方法
  20. 压缩为王-阿里第五届中间件复赛总结

热门文章

  1. 成员函数指针与高性能的C++委托(中篇)
  2. 学习编程技术常见的疑问,你敢说你没有过一个吗?信你个鬼!
  3. 警惕、曝光一个不好的现象
  4. 树莓派vnc用法 linux,怎样使用VNC在树莓派上运行远程桌面
  5. 华为交换机配置syslog发送_华为/H3C Syslog配置
  6. ecs 对比 本地服务器_阿里云服务器双十一活动福利
  7. ROS服务中存在string类型变量,如何给string类型变量赋值及取值
  8. 导师要让你学会的“显规则”
  9. 送书《R语言数据分析和可视化》 | 这个为生信学习和生信作图打造的开源R教程真香!!!...
  10. python常用函数import_python 常用函数集合