目录

一、理论基础

二、核心程序

三、测试结果


一、理论基础

1.1巴特沃斯滤波器

MATLAB函数“emg_sim()”:编写一个MATLAB功能,模拟以2048 Hz采样的emg信号。函数的输入应为模拟持续时间(秒)。第二个输入应用于指定相对于“干净”肌电信号RMS值的电力线干扰幅度。在包含60 Hz干扰之前,函数的一个输出应为模拟EMG向量(见下文)。该函数的另一个输出应该是模拟EMG向量,包括60 Hz干扰。如果您选择,可以使用其他参数。要模拟肌电信号,首先使用MATLAB函数“randn()”创建一个独立的零均值高斯随机向量。在使用rand()生成器之前,请确保使用系统时钟随机地对其进行状态(也称为“种子”/“状态”)。[请参见MATLAB帮助页中的randn(),以找到一个单行命令。]其次,设计一个截止频率为150 Hz的二阶低通巴特沃斯滤波器。第三,将随机序列通过巴特沃斯滤波器。这样做可以塑造随机序列,使其看起来像一个持续努力的肌电信号,其频谱类似于上图。第四,将适当缩放的60 Hz正弦波添加到信号中(以模拟电力线干扰)。第五,注意巴特沃斯过滤器将有一个与之相关的启动瞬态。这种瞬态降低了模拟的保真度。因此,由randn()创建的初始随机序列的长度必须等于所需的EMG序列长度加上启动瞬态的长度。在第五步中,“切断”第四阶段序列的启动瞬态。您的模拟已完成。注意,EMG信号的绝对缩放对于这个问题并不重要。仅EMG信号相对于60Hz干扰的相对振幅。由于肌电信号是随机的,通常最好将60 Hz干扰的幅度缩放到模拟“干净”肌电的RMS值(低通滤波后)。

使用matlab中自带的randn函数产生一组随机数,作为EMG信号,然后EMG信号的采样率为2048hz。这里随机数产生的随机数种子采用的机遇系统时钟的随机数种子。系统输入有两个,一个是仿真时间,单位为s,一个是干扰值,输出有两个,一个为EMG信号,一格式带60hz正弦干扰的EMG信号。系统的设计步骤如下所示:

首先使用randn产生一组随机数,然后设计一个低通的巴特沃斯滤波器,其截止频率为150hz,将建立的随机数EMG信号输入到巴特沃斯滤波器。再将滤波得到的信号添加一个60hz的sin信号作为干扰。从而实现函数一个主要功能。

由于信号只保留EMG信号中的150hz,而对于150hz之外的频率信号需要滤除,巴特沃斯(Butterworth)滤波器是一种具有最大平坦幅度响应的低通滤波器,它在通信领域里已有广泛应用,在电测中也具有广泛的用途,可以作检测信号的滤波器。

巴特沃斯低通滤波器的平方幅度响应为:

其中,n为滤波器的阶数,为低通滤波器的截止频率。在matlab中使用buttord和butter来设计巴特沃斯滤波器。buttord函数可在给定滤波器性能的情况下,选择巴特沃斯滤波器的阶数n和截止频率,从而可利用butter函数设计巴特沃斯滤波器的传递函数。

1.2 陷波器

陷波器是一种特殊的带阻滤波器,其阻带在理想情况下只有一个频率点,因此也被称为点阻滤波器。这种滤波器主要用于消除某个特定频率的干扰,由于陷波器频率特性的特殊性,它除了可采用双线性变换进行设计外,还可以采用所谓零极点配置的方法进行设计。

一个理想的陷波滤波器的频率特性要在消除的信号频率点处,其值等于零;而在其他频率点处,其值等于1。由于数字滤波器的频率特性就是其单位冲激响应在单位圆上的Z变换,因此只需要在单位圆上相应于所需带阻滤波器阻带位置的频率处设置零点,就可以使滤波器的频率特性在所需阻带频率处为零。但是仅仅进行零点设置只考虑到了滤波器的阻带特性。为了得到非常陡峭的过渡带和常数幅度的通带特性,必须在Z平面上为每一个零点再配置一个相应的极点。Z平面单位圆附近的零点会在滤波器幅频特性的相应频率处产生陷落,零点离单位圆越近,陷落越深;而Z平面单位圆附近的极点会在滤波器幅频特性的相应频率处产生凸峰,极点离单位圆越近,凸峰越高。因此在完成了零点的配置后,为了抵消零点引起的陷落对滤波器通带范围内幅频特性的影响,还需要再配置相应的极点,由于滤波器稳定性的要求,极点必需配置在单位圆内,显然极点离单位圆越近则极点对零点的抵消作用越明显,得到的滤波器的阻带就越窄,过渡带就越陡峭。

二、核心程序

clc;
clear;
close all;times                   = 1;
power_line_interference = 1;
order                   = 1;
%function 1:generator EMG
[EMG_vector60,EMG_vector] = emg_sim(times,power_line_interference);
%function 2:notch_filter
EMG_notch_Filter          = emg_notch60(EMG_vector60,order);
%function 3
EMG_notch                 = emg_freq_null(EMG_vector60);
%function 4
RMS                       = emg_compare(EMG_vector,EMG_notch);
function EMG_notch_Filter = emg_notch60(EMG_vector60,order);%EMG_60hz:输入60hz的MEG信号
%order   :notch滤波器的阶数
fs = 2048;
N  = length(EMG_vector60);
Wp = [1 150]/1000;
Ws = [59 61]/1000;
Rp = 1;
Rs = 15;
[n,Wn]  = buttord(Wp,Ws,Rp,Rs);
[b2,a2] = butter(order,Wn,'stop');
figure
freqz(b2,a2,1000,2000)
title('n=2 Butterworth Bandstop Filter')
EMG_notch_Filter=filter(b2,a2,EMG_vector60);figure
%加入一个60hz的sin
subplot(211);plot(EMG_vector60);title('EMG+sin');grid on;
axis([0,N,1.2*min(EMG_vector60),1.2*max(EMG_vector60)]);subplot(212);plot(EMG_notch_Filter);title('EMG-sin');grid on;
axis([0,N,1.2*min(EMG_notch_Filter),1.2*max(EMG_notch_Filter)]);

三、测试结果

A25-01

EMG信号的低通滤波器的matlab仿真实现相关推荐

  1. matlab仿真生成信号程序,信号与系统的MATLAB仿真

    用哪个MATLAB进行信号与系统仿真,有详细的实例程序及结果 1 信号与系统的MATLAB 仿真 一.信号生成与运算的实现 1.1 实现)3(sin )()(π±===t t t t S t f a ...

  2. 空间谱估计matlab实现,相干信号空间谱估计测向Matlab仿真研究

    相干信号空间谱估计测向Matlab 仿真研究 1. 引言 由于多径传播.电磁干扰等因素的影响,相干信源存在的电磁环境是经常碰到的.当空间存在相干源时,经典的超分辨DOA 估计方法:MUSIC 算法和E ...

  3. 脉冲波形对uwb的影响matlab仿真,DS-UWB系统信号的产生及MATLAB仿真

    目录 摘要 (2) 第1章超宽带信号 (3) 1.1 引言 (3) 1.2 直接序列超宽带信号(DS-UWB) (4) 1.2.1 DS-UWB的定义 (4) 1.2.2 DS-UWB的特点 (4) ...

  4. 基于matlab实现信号的低通滤波器,基于matlab的低通滤波器.doc

    基于matlab的低通滤波器.doc 第-1-页共10页基于matlab的低通滤波器摘要:调用MATLAB信号处理工具箱中滤波通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念.应用最广 ...

  5. m基于FH-GFSK信号的盲解调matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 GFSK 高斯频移键控调制是把输入数据经高斯低通滤波器预调制滤波后,再进行FSK调制的数字调制方式. ...

  6. BPSK信号matlab,BPSK信号调制解调与MATLAB仿真.docx

    在科技迅猛发展的今天,大量的信息交流离不开当今社会生活的方方面面,所以数字通信系统占据了重要地位,信号的调制与解调,就在通信中起着非常重要的作用,并且在信号传输过程中使信号的安全性和传输特性大大提高, ...

  7. 雷达回波信号的脉冲压缩matlab仿真

    %LFM脉冲的匹配滤波 clear all; T=10e-6;                                   %发射脉宽10us B=30e6;                 ...

  8. 基于压缩感知的心电信号QRS检测算法matlab仿真

    目录 1.算法仿真效果 2.MATLAB源码 3.算法概述 4.部分参考文献 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB源码 %********************* ...

  9. 基于代价函数小波脊相位的MFSK信号符号速率估计MATLAB仿真及代码(2020.12.14更新)

    算法来源 王勇, 王李福, 邹辉,等. 一种小波脊相位提取方法: 中国专利. 仿真结果 引言 当前,脊点的选取较准确也较经典的方法是Liu等提出的里程碑式的基于代价函数的小波脊相位提取方法(即代价函数 ...

最新文章

  1. 深度学习的四个学习阶段!
  2. Python基于MASK信息抽取ROI子图实战:原始影像和mask文件都是二维的情况
  3. redis的事务总结
  4. 敏捷BI的业务模型是怎样的,为何能替代手动建模?
  5. JSP环境搭建和入门
  6. 算法 之 栈的简单讲解
  7. 4. Nginx 与 PHP
  8. lamp环境搭建之配置apache与fpm方式的php
  9. 腾讯会议PPT演讲者模式
  10. Windows系统监控
  11. LabVIEW FPGA PCIe开发讲解-7.1节:FPGA PCIe/PXIe基础知识和概念概述
  12. A. Equalize Prices Again(水题) Codeforces Round #590 (Div. 3)
  13. 步进电机stepmotor
  14. 当我们谈论基因,我们在谈论什么
  15. 广州刷脸支付骗局_刷脸支付骗局你仔细观察一下
  16. 关于FileWrite写入文本后,打开文本发现是空的
  17. microPython驱动tft屏幕显示中文终极解决方案
  18. 8*8点阵动态显示 I 爱 U
  19. 【计算机网络】计算机网络基础知识(三次握手,四次挥手,OSI七层网络模型)
  20. 第十六届全国大学生智能车竞赛浙江赛区选拔赛成绩汇总

热门文章

  1. 关于javax.servlet.*导包错误的解决方案
  2. docker 运行java程序_Docker:在容器中运行Java应用程序
  3. matlab截取图像一部分
  4. 你不知道的钣金加工工艺知识,简直不要太全面!
  5. java 图片幻灯片,不需要的java脚本图片幻灯片动画覆盖与网站 Headers
  6. 时间戳转换标准时间格式(年月日-时分秒)
  7. WinForm中KeyDown,KeyPress和KeyUp的顺序与区别解析 PreviewKeyDown
  8. PPT 的模板制作过程
  9. 解决全面屏手机应用不能全屏显示问题
  10. 删除单链表中指定值的所有结点