基于matlab的数字滤波器设计及心电信号分析
- 格式:doc
- 大小:167.00 KB
- 文档页数:21
基于MATLAB信号处理工具箱的数字滤波器设计摘要:传统数字滤波器工作起来,需要计算量很大,对于设计要求来说,又比较复杂,需要调整滤波特性,有很大的难度,并且影响它本身的应用以及功能。
本文中,主要介绍了利用MATLAB信号处理工具箱的功能,设计常规数字滤波器,设计过程中使用一些常用的专用软件。
对于,使用MATLAB语言程序设计以及信号处理工具箱的FDATool工具,各种界面的详细步骤都有详细的介绍。
对于MATLAB设计滤波器,为了减轻庞大的工作量,也为了简便直观,我们对比设计要求,以及滤波器特性的参数,这样才能更有利于,优化滤波器本身。
在本文中,主要解读了仿真软件Simulink对设计出来的滤波器仿真,设计过程中利用工具MATLAB。
我们验证结果的准确性,是通过软件仿真实验,从而达到对滤波器的设计。
关键词:MATLAB;模拟滤波器;数字滤波器目录1 引言 (1)2 模拟滤波器的设计 (1)2.1 几种常用的模拟滤波器 (2)2.2 巴特沃斯低通滤波器设计 (3)3 数字滤波器的设计 (5)4 结束语 (10)参考文献 (10)1引言基于对正弦基波,以及整词谐波的分析,可以得知系统电压,电流信号中,成分比较复杂,因此,在电力系统中,最关键的部件还是滤波器。
MATLAB和Mathematica、Maple共同称为三大数学软件。
MATLAB在数学类科技应用软件中,在数值计算方面地位不可代替。
MATLAB可以进行矩阵运算,绘制函数和数据,实现算法,创建用户界面,连接其他编程语言的程序等功能,它的应用方面主要在于,工程计算;控制设计;信号处理与通讯;图像处理信号检测;金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与工程中常用的形式十分相似,故用MATLAB来解算问题要比其他语言完成事情简捷,因此可以直接使用,我们可以把自己的程序导入进MATLAB函数库中,方便以后的使用。
因此我们设计滤波时,根据指标,直接使用CAD程序,就可以得到高通、带通和带阻滤波器系统函数。
一、引言数字滤波器是数字信号处理中至关重要的组成部分,它能够对数字信号进行滤波处理,去除噪音和干扰,提取信号中的有效信息。
其中,fir数字滤波器作为一种常见的数字滤波器类型,具有稳定性强、相位响应线性等特点,在数字信号处理领域得到了广泛的应用。
本文将基于matlab软件,探讨fir数字滤波器的设计原理、方法和实现过程,以期能够全面、系统地了解fir数字滤波器的设计流程。
二、fir数字滤波器的基本原理fir数字滤波器是一种有限长冲激响应(finite impulse response, FIR)的数字滤波器,其基本原理是利用线性相位特性的滤波器来实现对数字信号的筛选和处理。
fir数字滤波器的表达式为:$$y(n) = \sum_{k=0}^{M}h(k)x(n-k)$$其中,y(n)为输出信号,x(n)为输入信号,h(k)为滤波器的系数,M为滤波器的长度。
fir数字滤波器的频率响应特性由其系数h(k)决定,通过设计合适的系数,可以实现对不同频率成分的滤波效果。
三、fir数字滤波器的设计方法fir数字滤波器的设计方法主要包括窗函数法、频率抽样法、最小最大法等。
在matlab中,可以通过信号处理工具箱提供的fir1函数和firls函数等来实现fir数字滤波器的设计。
下面将分别介绍这两种设计方法的基本原理及实现步骤。
1. 窗函数法窗函数法是fir数字滤波器设计中最为常见的方法之一,其基本原理是通过对理想滤波器的频率响应进行窗函数加权来满足设计要求。
在matlab中,可以使用fir1函数实现fir数字滤波器的设计,其调用格式为:h = fir1(N, Wn, type)其中,N为滤波器的阶数,Wn为滤波器的截止频率,type为窗函数的类型。
通过调用fir1函数,可以灵活地设计出满足特定要求的fir数字滤波器。
2. 频率抽样法频率抽样法是fir数字滤波器设计中的另一种重要方法,其基本原理是在频域上对理想滤波器的频率响应进行抽样,并拟合出一个最优的滤波器。
河南科技大学课程设计说明书课程名称医学信号处理题目基于MATLAB的心电信号的分析与处理设计(2)院系医学技术与工程学院班级医疗器械工程111班学生姓名指导教师侯海燕宋卫东_日期 2014年9月11号课程设计任务书(指导教师填写)课程设计名称医学信号处理学生姓名专业班级医疗器械工程111班设计题目基于MATLAB的心电信号的分析与处理设计(2)一、课程设计目的1.熟练掌握使用MATLAB程序设计方法2.掌握数字信号处理的基本概念、理论、方法3.掌握序列离散傅里叶变换的MATLAB实现,并进行频谱分析4.熟练掌握使用MATLAB设计IIR或FIR数字滤波器5.学会用MATLAB对信号进行分析和处理二、设计内容、技术条件和要求一)设计内容与技术条件1.根据给定的一段MIT-BIH心电信号(101号),画出心电信号的时域波形和频谱图(幅频和相频);2.根据心电信号频率范围及其噪声的频率范围设计2个滤波器(一个IIR,一个FIR)实现对心电信号滤波。
滤波器的种类(高通,低通,带通,带阻),滤波器性能指标(通阻带截止频率,衰减系数),滤波器的设计方法(IIR有冲击响应不变法和双线性变换法,FIR有窗函数法及频率抽样法)等自行设计。
要求输出所设计的滤波器的系统函数,画出滤波器的频率响应(幅频响应和相频响应)曲线;3.用该滤波器对心电信号进行滤波,画出滤波以后心电信号的时域波形和频谱(幅频);分析信号滤波前后心电信号的时域和频域的变化;4.两个滤波器滤波效果异同分析;5.运用GUI设计一个心电信号处理系统界面。
(选作)二)设计要求1.根据滤波器的性能指标要求,设计数字滤波器;2.程序中按照IIR滤波器的步骤一步步完成设计;尽可能的少调用MATLAB 自带的函数文件;3.设计程序要通用性好,整齐易懂,并要求主要语句有注释;4.设计结果中的图示要美观,整齐,有标题,有纵横坐标标示;5.课程设计报告要有理论依据、设计过程,结果分析。
河南科技大学课程设计说明书课程名称医学信号处理题目基于MATLAB的心电信号的分析与处理设计(2)院系医学技术与工程学院班级医疗器械工程111班学生姓名指导教师侯海燕宋卫东_日期 2014年9月11号课程设计任务书(指导教师填写)课程设计名称医学信号处理学生姓名专业班级医疗器械工程111班设计题目基于MATLAB的心电信号的分析与处理设计(2)一、课程设计目的1.熟练掌握使用MATLAB程序设计方法2.掌握数字信号处理的基本概念、理论、方法3.掌握序列离散傅里叶变换的MATLAB实现,并进行频谱分析4.熟练掌握使用MATLAB设计IIR或FIR数字滤波器5.学会用MATLAB对信号进行分析和处理二、设计内容、技术条件和要求一)设计内容与技术条件1.根据给定的一段MIT-BIH心电信号(101号),画出心电信号的时域波形和频谱图(幅频和相频);2.根据心电信号频率范围及其噪声的频率范围设计2个滤波器(一个IIR,一个FIR)实现对心电信号滤波。
滤波器的种类(高通,低通,带通,带阻),滤波器性能指标(通阻带截止频率,衰减系数),滤波器的设计方法(IIR有冲击响应不变法和双线性变换法,FIR有窗函数法及频率抽样法)等自行设计。
要求输出所设计的滤波器的系统函数,画出滤波器的频率响应(幅频响应和相频响应)曲线;3.用该滤波器对心电信号进行滤波,画出滤波以后心电信号的时域波形和频谱(幅频);分析信号滤波前后心电信号的时域和频域的变化;4.两个滤波器滤波效果异同分析;5.运用GUI设计一个心电信号处理系统界面。
(选作)二)设计要求1.根据滤波器的性能指标要求,设计数字滤波器;2.程序中按照IIR滤波器的步骤一步步完成设计;尽可能的少调用MATLAB 自带的函数文件;3.设计程序要通用性好,整齐易懂,并要求主要语句有注释;4.设计结果中的图示要美观,整齐,有标题,有纵横坐标标示;5.课程设计报告要有理论依据、设计过程,结果分析。
数字信号处理实验报告专业:姓名:学号:班级:指导教师:电子信息与自动化学院基于MATLAB的IIR数字滤波器设计——心电图采集系统摘要:在现代通信系统中,由于信号中经常混有各种复杂成分,所以很多信号分析都是基于滤波器而进行的,而数字滤波器是通过数值运算实现滤波,具有处理精度高、稳定、灵活、不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊滤波功能。
实现IIR滤波器的阶次较低,所用的存储单元较少,效率高,精度高,而且能够保留一些模拟滤波器的优良特性,因此应用很广。
本文首先介绍了数字滤波器的概念,分类以及设计要求。
接着利用MATLAB函数语言编程,完成IIR数字滤波器的设计与信号滤波——心电图采集系统。
关键词:脉冲响应不变法;双线性变换法;Chebyshev;Butterworth;IIR滤波器Abstract:In modern communication system, because there are often a variety of complex components in the signal, many signal analysis is based on filter, while digital filter is realized by numerical operation, which has high processing accuracy, stability, flexibility, no impedance matching problem, and can realize the special filtering function that analog filter can not realize. The order of implementing IIR filter is low, the memory unit used is less, the efficiency is high, the precision is high, and some excellent characteristics of analog filter can be retained, so it is widely used. In this paper, the concept, classification and design requirements of digital filter are introduced at first. And then use MA. TLAB function language programming, completed the design of IIR digital filter and signal filtering-ECG acquisition system.Keywords:Impulse response invariance method; bilinear transformation method; Chebyshev;Butterworth;IIR filter目录第1章滤波器简介 (1)1.1 滤波器的定义及分类 (1)1.2 滤波器的国内外研究现状 (1)第2章IIR数字滤波器的原理与结构 (2)2.1 数字滤波器的定义及分类 (2)2.2 IIR数字滤波器的结构与特点 (2)第3章IIR数字滤波器的设计方法 (2)3.1 IIR数字滤波器的设计指标 (2)3.2 利用模拟滤波器设计IIR数字滤波器方法 (3)第4章基于MATLAB 设计IIR数字滤波器 (3)4.1 MATLAB简介 (3)4.2 基于MATLAB的设计IIR数字滤波器的步骤 (3)4.2.1 利用Butterworth实现IIR滤波器 (3)4.2.2 利用Chebyshev实现IIR滤波器 (4)4.2.3 利用椭圆实现IIR滤波器 (4)第5章基于MATLAB的IIR滤波器的应用 (5)5.1 IIR数字滤波器的应用---心电图采集系统 (5)第6章总结与展望 (9)参考文献 (9)第1章滤波器简介1.1 滤波器的定义及分类滤波器是一种用来消除干扰杂讯的器件,凡是可以使信号中特定的频率成分通过,而极大地衰减或抑制其他频率成分的装置或系统都称之为滤波器,相当于频率“筛子”。
实验6 基于MATLAB 的数字滤波器设计实验目的:加深对数字滤波器的常用指标和设计过程的理解。
实验原理:低通滤波器的常用指标:PP j P for e G ωωδδω≤+≤≤-,1)(1πωωδω≤≤≤S S j for eG ,)(通带边缘频率:Pω,阻带边缘频率:Sω ,通带起伏:P δ,通带峰值起伏:])[1(log2010dB p pδα--=,阻带起伏:sδ,最小阻带衰减:])[(log 2010dB s S δα-=。
数字滤波器有IIR 和FIR 两种类型,它们的特点和设计方法不同。
在MATLAB 中,可以用[b ,a]=butter (N,Wn )等函数辅助设计IIR 数字滤波器, 也可以用b=fir1(N,Wn,’ftype’) 等函数辅助设计FIR 数字滤波器。
实验内容: 利用MATLAB 编程设计一个数字带通滤波器,指标要求如下:通带边缘频率:10.4P ωπ=,20.6P ωπ=,通带峰值起伏:][1dB p≤α。
阻带边缘频率:πω3.01=S ,20.7S ωπ=,最小阻带衰减:][40dB S ≥α。
分别用IIR 和FIR 两种数字滤波器类型进行设计。
实验要求:给出IIR 数字滤波器参数和FIR 数字滤波器的冲激响应,绘出它们的幅度和相位频响曲线,讨论它们各自的实现形式和特点。
实验步骤:①Butterworth 滤波器的设计(IIR )>>wp=[0.4*pi,0.6*pi]; >>wr=[0.3*pi,0.7*pi]; >>Ap=1; >>Ar=40;Sω-Pω-P SωPassband StopbandTransition bandFig 7.1 Typical magnitudespecification for a digital LPF>>[N,Wn]=buttord(wp/pi,wr/pi,Ap,Ar)N =7Wn =0.3854 0.6146>> [b,a]=butter(N,Wn,'bandpass')b =Columns 1 through 120.0002 0 -0.0014 0 0.0042 0 -0.0071 0 0.0071 0 -0.0042 0Columns 13 through 150.0014 0 -0.0002a =Columns 1 through 121.0000 0.0000 3.7738 0.0000 6.5614 0.0000 6.6518 0.0000 4.2030 0.0000 1.6437 0.0000Columns 13 through 150.3666 0.0000 0.0359>> [H,w]=freqz(b,a);>>mag=abs(H);>>plot(w/pi,mag);>>xlabel('角频率(\Omega)');>>ylabel('幅度|Ha(j\Omega)|');>> title('数字butterworth带通滤波器幅度响应|Ha(j\Omega)|');>>phase=angle(H);>>plot(w/pi,phase);>>xlabel('角频率(\Omega)');>>ylabel('相位');>> title('数字butterworth带通滤波器相位响应曲线');>>②FIR滤波器的设计:>> wp1 = 0.4*pi; wp2 = 0.6*pi;>> ws1 = 0.3*pi; ws2 = 0.7*pi;>>tr_width = min((wp1-ws1),(ws2-wp2)) tr_width =0.3142>> M = ceil(6.2*pi/tr_width) + 1M =63>> n=[0:1:M-1];>> wc1 = (ws1+wp1)/2; wc2 = (wp2+ws2)/2; >>wc=[wc1/pi,wc2/pi];>>window= hanning(M);>> [h1,w]=freqz(window,1);>>figure(1);>>subplot(2,1,1)>>stem(window);>>axis([0 60 0 1.2]);>>grid;>>xlabel('n');>> title('Hanning窗函数');>>subplot(2,1,2)>>plot(w/pi,20*log(abs(h1)/abs(h1(1)))); >>axis([0 1 -350 0]);>>grid;>>xlabel('w/\pi');>>ylabel('幅度(dB)');>> title('Hanning窗函数的频谱');>>hn = fir1(M-1,wc, hanning (M));>> [h2,w]=freqz(hn,1,512);>>figure(2);>>subplot(2,1,1)>>stem(n,hn);>>axis([0 60 -0.25 0.25]);>>grid;>>xlabel('n');>>ylabel('h(n)');>> title('Hanning窗函数的单位脉冲响应'); >>subplot(2,1,2)>>plot(w/pi,20*log(abs(h2)/abs(h2(1)))); >>grid;>>xlabel('w/\pi');>>ylabel('幅度(dB)');>>figure(3);>>phase=angle(h1);>>plot(phase);>>axis([1 pi -1 0]);>>xlabel('w/\pi');>>ylabel('线性相位');>> title('Hanning窗函数相位特性曲线'); >>实现形式及特点分析:1.在本例中,相同的技术指标下,IIR滤波器实现的阶数为N=7,而FIR滤波器的阶数N=63。
计算机信息处理课程设计说明书题目:基于MATLAB的心电信号分析学院(系):年级专业:学号:学生姓名:指导教师:燕山大学课程设计(论文)任务书院(系):基层教学单位:说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。
2014年12月 01日摘要心电信号是人们认识最早、研究最早的人体生理电信号之一。
目前心电检测已经成为重要的医疗检测手段,但是心电信号的相关试验及研究依然是医学工作者和生物医学工程人员的重要议题。
信号处理的基本概念和分析方法已应用于许多不同领域和学科中,尤其是数字计算机的出现和大规模集成技术的高度发展,有力地推动了数字信号处理技术的发展和应用。
心电信号是人类最早研究并应用于医学临床的生物电信号之一,它比其他生物电信号便易于检测,并具有较直观的规律性,对某些疾病尤其是心血管疾病的诊断具有重要意义。
它属于随机信号的一种,用数字信号处理的方法和Matlab软件对其进行分析后,可以得到许多有用的信息,对于诊断疾病有非常重要的参考价值。
本课题基于matlab对心电信号做了简单的初步分析。
直接采用Matlab 语言编程的静态仿真方式、对输入的原始心电信号,进行线性插值处理,并通过matlab语言编程设计对其进行时域和频域的波形频谱分析,根据具体设计要求完成程序编写、调试及功能测试,得出一定的结论。
关键词: matlab 心电信号线性插值频谱分析目录一:课题的目的及意义 (1)二:设计内容与步骤 (1)1.心电信号的读取 (1)2.对原始心电信号做线形插值 (3)3.设计滤波器 (5)4.对心电信号做频谱分析 (6)三:总结 (7)四:附录 (8)五:参考文献 (12)一:课题目的及意义心电信号是人类最早研究并应用于医学临床的生物信号之一,它比其它生物电信号更易于检测,并且具有较直观的规律性,因而心电图分析技术促进了医学的发展。
然而,心电图自动诊断还未广泛应用于临床,从国内外的心电图机检测分析来看,自动分析精度还达不到可以替代医生的水平,仅可以为临床医生提供辅助信息。
利用MATLAB进行心电图信号处理与分析心电图(Electrocardiogram,简称ECG)是一种记录心脏电活动的重要手段,通过对心电图信号的处理与分析可以帮助医生判断患者的心脏健康状况。
MATLAB作为一种功能强大的科学计算软件,被广泛运用于心电图信号处理与分析领域。
本文将介绍如何利用MATLAB进行心电图信号处理与分析,包括信号预处理、特征提取、心率检测等内容。
1. 信号预处理在进行心电图信号处理之前,首先需要对原始信号进行预处理,以提高后续分析的准确性和可靠性。
常见的信号预处理方法包括滤波、去噪和基线漂移校正等。
1.1 滤波滤波是信号处理中常用的技术,可以去除信号中的噪声和干扰,保留有用的信息。
在心电图信号处理中,常用的滤波方法包括低通滤波、高通滤波和带通滤波等。
MATLAB提供了丰富的滤波函数和工具箱,可以方便地实现各种滤波操作。
1.2 去噪心电图信号往往受到各种干扰和噪声的影响,如肌肉运动、呼吸运动等。
去噪是信号预处理中至关重要的一步,可以有效提取出心电活动的真实信息。
MATLAB中有多种去噪算法可供选择,如小波去噪、均值滤波等。
1.3 基线漂移校正基线漂移是指心电图信号中由于各种原因引起的直流成分变化,会影响后续特征提取和分析的准确性。
在预处理阶段需要对基线漂移进行校正,以保证后续分析结果的可靠性。
MATLAB提供了多种基线漂移校正方法,如多项式拟合、小波变换等。
2. 特征提取特征提取是对经过预处理的心电图信号进行进一步分析和抽取有意义的特征信息。
常见的特征包括R峰位置、QRS波群宽度、ST段变化等,这些特征可以反映心脏活动的规律和异常情况。
2.1 R峰检测R峰是心电图中QRS波群中最高点对应的峰值,通常用于计算心率和分析心脏节律。
MATLAB提供了多种R峰检测算法,如基于阈值法、基于波形相似性比较法等。
通过R峰检测可以准确计算心率,并进一步分析心脏节律是否规律。
2.2 QRS波群特征提取除了R峰位置外,QRS波群中的形态和宽度也包含了丰富的信息。
一、 实验目地(1)掌握双线性变换法及脉冲相应不变法设计IIR 数字滤波器地具体设计方法; (2) 熟悉用双线性变换法及脉冲响应不变法设计低通、高通和带通IIR 数字滤波器地计算机编程.二、 实验原理在MA TLAB 中,可以用下列函数辅助设计IIR 数字滤波器:1)利用buttord 和cheb1ord 可以确定低通原型巴特沃斯和切比雪夫滤波器地阶数和截止频率;2)[num,den]=butter (N,Wn )(巴特沃斯)和[num,den]=cheby1(N,Wn ),[num,den]=cheby2(N,Wn )(切比雪夫1型和2型)可以进行滤波器地设计;3)lp2hp,lp2bp,lp2bs 可以完成低通滤波器到高通、带通、带阻滤波器地转换;4)使用bilinear 可以对模拟滤波器进行双线性变换,求得数字滤波器地传输函数系数;5)利用impinvar 可以完成脉冲响应不变法地模拟滤波器到数字滤波器地转换. 三、 预习要求(1)在MATLAB 中,熟悉函数butter 、cheby1、cheby2地使用,其中:[num,den]=butter (N,Wn )巴特沃斯滤波器设计;[num,den]=cheby1(N,Wn )切比雪夫1型滤波器设计;[num,den]=cheby2(N,Wn )切比雪夫2型滤波器设计.(2)阅读附录中地实例,学习在MA TLAB 中进行数字滤波器地设计;(3)给出IIR 数字滤波器参数和滤波器地冲激响应,绘出它们地幅度和相位频响曲线,讨论它们各自地实现形式和特点.四、 实验内容利用MATLAB 编程,用脉冲响应不变法和双线性变换法设计一个数字带通滤波器,指标要求如下:通带边缘频率:π45.01=ΩP ,π65.02=ΩP ,通带峰值起伏:][1dB p ≤α.阻带边缘频率:π3.01=ΩS ,π8.02=ΩS ,最小阻带衰减: ][40dB S ≥α. 附录:例1 设采样周期T=250μs (采样频率fs =4kHz ),用脉冲响应不变法和双线性变换法设计一个三阶巴特沃兹滤波器,其3dB 边界频率为fc =1kHz.[B,A]=butter(3,2*pi*1000,'s');[num1,den1]=impinvar(B,A,4000);[h1,w]=freqz(num1,den1);[B,A]=butter(3,2/0.00025,'s');[num2,den2]=bilinear(B,A,4000);[h2,w]=freqz(num2,den2);f=w/pi*2000;plot(f,abs(h1),'-.',f,abs(h2),'-');grid;xlabel('频率/Hz ')ylabel('幅值/dB')程序中第一个butter地边界频率2π×1000,为脉冲响应不变法原型低通滤波器地边界频率;第二个butter地边界频率2/T=2/0.00025,为双线性变换法原型低通滤波器地边界频率.图1给出了这两种设计方法所得到地频响,虚线为脉冲响应不变法地结果;实线为双线性变换法地结果.脉冲响应不变法由于混叠效应,使得过渡带和阻带地衰减特性变差,并且不存在传输零点.同时,也看到双线性变换法,在z=-1即Ω=π或f=2000Hz处有一个三阶传输零点,这个三阶零点正是模拟滤波器在ω=∞处地三阶传输零点通过映射形成地.例2 设计一数字高通滤波器,它地通带为400~500Hz,通带内容许有0.5dB地波动,阻带内衰减在小于317Hz地频带内至少为19dB,采样频率为1,000Hz.正确wc=2*1000*tan(2*pi*400/(2*1000));wt=2*1000*tan(2*pi*317/(2*1000));[N,wn]=cheb1ord(wc,wt,0.5,19,'s');[B,A]=cheby1(N,0.5,wn,'high','s');[num,den]=bilinear(B,A,1000);[h,w]=freqz(num,den);f=w/pi*500;plot(f,20*log10(abs(h)));axis([0,500,-80,10]);grid;xlabel('')ylabel('幅度/dB')例3 设计一巴特沃兹带通滤波器,其3dB边界频率分别为f2=110kHz和f1=90kHz,在阻带f3 = 120kHz处地最小衰减大于10dB,采样频率fs=400kHz.w1=2*400*tan(2*pi*90/(2*400));w2=2*400*tan(2*pi*110/(2*400));wr=2*400*tan(2*pi*120/(2*400));[N,wn]=buttord([w1 w2],[0 wr],3,10,'s');[B,A]=butter(N,wn,'s');[num,den]=bilinear(B,A,400);[h,w]=freqz(num,den);f=w/pi*200;plot(f,20*log10(abs(h)));axis([40,160,-30,10]);grid;xlabel('频率/kHz')ylabel('幅度/dB')例4 一数字滤波器采样频率fs = 1kHz,要求滤除100Hz地干扰,其3dB地边界频率为95Hz 和105Hz,原型归一化低通滤波器为w1=95/500;w2=105/500;[B,A]=butter(1,[w1, w2],'stop');[h,w]=freqz(B,A);f=w/pi*500;plot(f,20*log10(abs(h))); axis([50,150,-30,10]); grid;xlabel('频率/Hz') ylabel('幅度/dB')。
基于MATLAB的心电信号的分析与处理设计心电信号是一种重要的生物信号,可以通过分析和处理心电信号来诊断心脏病和其他心血管疾病。
在本文中,我将介绍基于MATLAB的心电信号分析与处理的设计方案。
首先,我们需要明确任务的目标和需求。
心电信号的分析与处理主要包括以下几个方面:心率分析、心律失常检测、心电特征提取和心电图绘制。
下面将详细介绍每一个方面的设计方案。
1. 心率分析:心率是心电信号中最基本的参数之一,可以通过计算心电信号的RR间期来得到。
RR间期是相邻两个R波之间的时间间隔,R波是心电信号中最明显的波峰。
我们可以使用MATLAB中的信号处理工具箱来计算RR间期。
首先,我们需要对心电信号进行预处理,包括滤波和去除噪声。
常用的滤波方法有低通滤波和高通滤波。
低通滤波可以去除高频噪声,高通滤波可以去除低频噪声。
MATLAB中的fir1函数可以用于设计滤波器。
然后,我们可以使用MATLAB中的findpeaks函数来检测R波的位置。
findpeaks函数可以找到信号中的峰值,并返回峰值的位置和幅值。
通过计算相邻两个R波的时间间隔,就可以得到心率。
2. 心律失常检测:心律失常是心脏节律异常的一种表现,可以通过心电信号的特征来检测。
常见的心律失常包括心房颤动、心室颤动等。
我们可以使用MATLAB中的自动检测算法来检测心律失常。
首先,我们需要对心电信号进行预处理,包括滤波和去除噪声,同心率分析中的方法相同。
然后,我们可以使用MATLAB中的心律失常检测工具箱来进行心律失常检测。
心律失常检测工具箱提供了多种自动检测算法,包括基于模板匹配的方法、基于时间域特征的方法和基于频域特征的方法。
根据具体的需求和数据特点,选择合适的算法进行心律失常检测。
3. 心电特征提取:心电信号中包含丰富的信息,可以通过提取心电特征来辅助心脏疾病的诊断。
常见的心电特征包括QRS波群宽度、ST段变化和T波形态等。
我们可以使用MATLAB中的特征提取工具箱来提取心电特征。
目录1、课程设计的目的 (1)2、课程设计的原理 (1)2.1用窗函数法设计FIR滤波器 (1)2.2用巴特沃斯法设计IIR低通滤波器 (1)3、课程设计设计步骤及结果分析 (1)3.1心电信号采集......................................... 错误!未定义书签。
3.2源数据的导入 (2)3.3绘出源心电信号的时域波形图和频谱图并进行分析 (2)3.4含噪心电信号合成 (3)3.5时域波形差 (5)3.6数字滤波器设计及滤波 (6)3.7心电信号时域波形及频谱的观察和分析 (12)4、心得体会 (18)1 课程设计的目的通过对常用数字滤波器的设计和实现,掌握数字信号处理的工作原理及设计方法;熟悉设计数字滤波器的方法,掌握利用数字滤波器对信号进行滤波的方法,掌握数字滤波器的计算机仿真,并能够对设计结果加以分析。
2 课程设计的原理2.1、用窗函数法设计FIR滤波器根据过渡宽带及阻带衰减要求,选择窗函数的类型并估计窗口长度N,窗函数类型可根据最小阻带衰减As独立选择,因为窗口长度N对最小阻带衰减As没有影响,在确定窗函数类型以后,可根据过渡宽带小于给定指标确定所拟用的窗函数的窗口长度N,设待求滤波器的过渡宽带,它与窗口长度N近似成反比,窗函数类型确定后,其计算公式也确定了,不过这些公式是近似的,得出的窗口长度还要在计算中逐步修正,原则上在保证阻带衰减满足要求的情况下,尽量选择较小的N,在N和窗函数类型确定后,即可调用MA TLAB中的窗函数求出窗函数。
2.2、用巴特沃斯法设计IIR低通滤波器巴特沃斯低通滤波器的幅度平方函数中,N为滤波器的阶数。
在Ω=Ωc附近,随着Ω加大,幅度迅速下降。
幅度下降的速度与阶数N有关,N越大,通带愈平坦,过渡带愈窄,过渡带与阻带幅度下降的速度愈快,总的频响特性与理想低通滤波器的误差愈小。
3 课程设计设计步骤及结果分析3.1、心电信号采集心电信号作为心脏电活动在人体体表的表现,信号一般比较微弱,幅度在10μV~5mV,频率为0.05~100Hz。
在心电信号的采集、放大、检测及记录过程中,有来自外界的各种干扰。
记录一段时间内的人体心电信号波形,要求长度不小于10秒,并对记录的信号进行数字化,保存为数据文件;这里,请同学们使用美国的MIT/BIH心电原始数据,由实验老师给出一定长度的的心电原始数据,数据保存在文件“a01.txt~a10.txt”中,在MATLAB中通过如下语句读取:%从当前路径下的a01.txt文件读取心电原始数据到变量a01中,a01为二维数据,第一列%为心电信号时间,第二列为心电信号幅度。
3.2、源数据的导入a=load('F:/心电信号数据/a16.txt');%选第十六组数据3.3、绘出源心电信号的时域波形图和频谱图并进行分析%时域波形图以及频谱图a=load('1.txt');t=a(:,1);b=a(:,2);figure(1);subplot(211);plot(t,b);title('心电信号的时域波形');xlabel('时间t/s');ylabel('幅值/A');n=1000;m=abs(fft(b,n));fs=100;f=fs/n*(0:n-1); subplot(212); plot(f,m);title('心电信号的频谱图');xlabel('频率 f/Hz');ylabel('幅值/db');心电信号的时域波形时间t/s幅值/A心电信号的频谱图频率 f/Hz幅值/d b3.4、含噪心电信号合成1、加入单频正弦干扰 y=0.2*sin(2*40*pi*t); y1=y+b; figure(2); subplot(211); plot(t,y1);title('加单频噪声时域波形'); xlabel('时间t/s');ylabel('幅值/A'); k=abs(fft(y1,n)); subplot(212); plot(f,k);title('加单频噪声频谱图'); xlabel('频率 /Hz');ylabel('幅值')加单频噪声时域波形时间t/s幅值/A加单频噪声频谱图频率 /Hz幅值选择添加单频正弦信号。
通过转置后添加到原始信号b 上,添加后的信号用y1表示。
对于变量、函数的操作是矩阵操作,两个信号相加必须长度一致。
2、继续加入白噪声y2 = awgn(y1,5); figure(3); subplot(211); plot(t,y2);title('加单频,白噪声时域波形'); xlabel('时间t/s');ylabel('幅值/A'); h=abs(fft(y2,n)); subplot(212); plot(f,h);title('加单频,白噪声频谱图'); xlabel('频率 /Hz');ylabel('幅值');012345678910-20246加单频,白噪声时域波形时间t/s幅值/A050100150200加单频,白噪声频谱图频率 /Hz幅值通过调用函数y2 = awgn(y1,5)对已经加了单频噪声的信号进行加噪,加噪后的信号用y2保存。
对y2信号的分析,如图所示分别给出了它的时域波形图和频谱图,通过对比,时域波形变化不大,但频谱图有了大幅度的变化。
3.5、时域波形差s=y2-b;figure(4);subplot(111);plot(t,s);title('时域波形差');时域波形差3.6、数字滤波器设计及滤波1、设计低通FIR滤波器%低通FIR滤波器N=50;wc=0.6;window=blackman(N);hn=fir1(N-1,wc,window);lv=filter(hn,1,y2); freqz(hn,1);Normalized Frequency (⨯π rad/sample)P h a s e (d e g r e e s )Normalized Frequency (⨯π rad/sample)M a g n i t u d e (d B )2、用低通FIR 滤波器对单频噪声进行滤波 %低通滤波器滤波后图形 subplot(211); plot(t,lv);title('滤波后时域波形');xlabel('时间t/s');ylabel('幅值/A'); LV=abs(fft(lv)); subplot(212); plot(f,LV);title('滤波后频谱图');xlabel('频率 /Hz');ylabel('幅值')滤波后时域波形时间t/s 幅值/A滤波后频谱图频率 /Hz幅值3、设计带阻FIR 滤波器 %带阻FIR 滤波器wlp=0.2*pi;wls=0.4*pi;wus=1.2*pi;wup=0.6*pi; B=wls-wlp; M=ceil(12*pi/B);wp=[(wls+wlp)/2/pi,(wus+wup)/2/pi]; hn=fir1(M,wp,'stop',blackman(M+1)); liu=filter(hn,1,y2); freqz(hn,1);Normalized Frequency (⨯π rad/sample)P h a s e (d e g r e e s )Normalized Frequency (⨯π rad/sample)M a g n i t u d e (d B )4、用带阻FIR 滤波器对单频噪声滤波后图形 %带阻FIR 滤波器滤波后图形 subplot(211); plot(t,liu);title('滤波后时域波形');xlabel('时间t/s');ylabel('幅值/A'); LIU=abs(fft(liu)); subplot(212); plot(f,LIU);title('滤波后频谱图');xlabel('频率 /Hz');ylabel('幅值');滤波后频谱图频率 /Hz幅值滤波后时域波形时间t/s 幅值/A5、设计低通IIR 滤波器 %低通IIR 滤波器wp=0.4*pi;ws=0.35*pi;rp=1;rs=10; [N,wc]=buttord(wp,ws,rp,rs,'s'); [B,A]=butter(N,wc,'s'); [Bz,Az]=impinvar(B,A); wen=filter(Bz,Az,y2); freqz(Bz,Az);Normalized Frequency (⨯π rad/sample)P h a s e (d e g r e e s )Normalized Frequency (⨯π rad/sample)M a g n i t u d e (d B )6、用低通IIR 滤波器对单频噪声滤波后图形 %低通IIR 滤波器滤波后图形 subplot(211); plot(t,wen);title('滤波后时域波形');xlabel('时间t/s');ylabel('幅值/A'); WEN=abs(fft(wen)); subplot(212); plot(f,WEN);title('滤波后频谱图');xlabel('频率 /Hz');ylabel('幅值');滤波后时域波形时间t/s 幅值/A滤波后频谱图频率 /Hz幅值3.7、心电信号时域波形及频谱的观察和分析1、低通FIR 滤波器滤波效果 subplot(331); plot(t,b);title('心电信号的时域波形'); xlabel('时间t/s');ylabel('幅值/A'); subplot(332); plot(f,m);title('心电信号的频谱图');xlabel('频率 f/Hz');ylabel('幅值/db'); subplot(333); plot(t,y1);title('加单频噪声时域波形'); xlabel('时间t/s');ylabel('幅值/A') subplot(334);plot(f,k);title('加单频噪声频谱图');xlabel('频率 /Hz');ylabel('幅值'); subplot(335);plot(t,y2);title('加单频,白噪声时域波形'); xlabel('时间t/s');ylabel('幅值/A'); subplot(336);plot(f,h);title('加单频,白噪声频谱图');xlabel('频率 /Hz');ylabel('幅值'); subplot(337);plot(t,lv);title('滤单频波后时域波形');xlabel('时间t/s');ylabel('幅值/A'); subplot(338);plot(f,LV);title('滤单频波后频谱图');xlabel('频率 /Hz');ylabel('幅值');心电信号的时域波形时间t/s幅值/A心电信号的频谱图频率 f/Hz 幅值/d b加单频噪声时域波形时间t/s幅值/A加单频噪声频谱图频率 /Hz幅值加单频,白噪声时域波形时间t/s幅值/A加单频,白噪声频谱图频率 /Hz幅值滤单频波后时域波形时间t/s幅值/A滤单频波后频谱图频率 /Hz幅值2、带阻FIR 滤波器滤波效果 subplot(331); plot(t,b);title('心电信号的时域波形'); xlabel('时间t/s');ylabel('幅值/A'); subplot(332); plot(f,m);title('心电信号的频谱图');xlabel('频率 f/Hz');ylabel('幅值/db'); subplot(333); plot(t,y1);title('加单频噪声时域波形'); xlabel('时间t/s');ylabel('幅值/A') subplot(334); plot(f,k);title('加单频噪声频谱图');xlabel('频率 /Hz');ylabel('幅值'); subplot(335); plot(t,y2);title('加单频,白噪声时域波形'); xlabel('时间t/s');ylabel('幅值/A'); subplot(336); plot(f,h);title('加单频,白噪声频谱图'); xlabel('频率 /Hz');ylabel('幅值'); subplot(337); plot(t,liu);title('滤单频波后时域波形'); xlabel('时间t/s');ylabel('幅值/A'); subplot(338); plot(f,LIU);title('滤单频波后频谱图'); xlabel('频率 /Hz');ylabel('幅值');心电信号的时域波形时间t/s幅值/A心电信号的频谱图频率 f/Hz 幅值/d b加单频噪声时域波形时间t/s幅值/A加单频噪声频谱图频率 /Hz幅值加单频,白噪声时域波形时间t/s幅值/A加单频,白噪声频谱图频率 /Hz幅值滤单频波后时域波形时间t/s幅值/A滤单频波后频谱图频率 /Hz幅值3、低通IIR滤波器滤波效果subplot(331);plot(t,b);title('心电信号的时域波形');xlabel('时间t/s');ylabel('幅值/A'); subplot(332);plot(f,m);title('心电信号的频谱图');xlabel('频率 f/Hz');ylabel('幅值/db'); subplot(333);plot(t,y1);title('加单频噪声时域波形');xlabel('时间t/s');ylabel('幅值/A') subplot(334);plot(f,k);title('加单频噪声频谱图');xlabel('频率 /Hz');ylabel('幅值'); subplot(335);plot(t,y2);title('加单频,白噪声时域波形');xlabel('时间t/s');ylabel('幅值/A'); subplot(336);plot(f,h);title('加单频,白噪声频谱图');xlabel('频率 /Hz');ylabel('幅值'); subplot(337);plot(t,wen);title('滤单频波后时域波形'); xlabel('时间t/s');ylabel('幅值/A'); subplot(338); plot(f,WEN);title('滤单频波后频谱图'); xlabel('频率 /Hz');ylabel('幅值');心电信号的时域波形时间t/s幅值/A心电信号的频谱图频率 f/Hz幅值/d b加单频噪声时域波形时间t/s 幅值/A050100加单频噪声频谱图频率 /Hz幅值510加单频,白噪声时域波形时间t/s幅值/A50100加单频,白噪声频谱图频率 /Hz幅值510滤单频波后时域波形时间t/s幅值/A50100滤单频波后频谱图频率 /Hz幅值4 心得体会通过这次的课程设计,我从中得到了许多经验和MATLAB 软件设计的一些新思路;在学习MATLAB 的过程中,我明白了“实践出真知”这句话的真谛,在书上看到的内容,如果不懂的话,我们可以把程序输入代码窗口,运行之后,看得出的结果,然后再加上书本上的讲解,就很好理解了,相反,如果我们只是想着这个程序或者这个函数有什么功能,肯定想很长时间都不明白。