基于matlab的肌电信号工频干扰的消除MATLAB_课程设计报告
matlab时域去高频噪声

matlab时域去高频噪声Matlab是一种强大的数学计算工具,广泛应用于信号处理、图像处理等领域。
本文将介绍如何利用Matlab对时域信号进行去除高频噪声的处理方法。
我们需要了解什么是高频噪声。
在信号处理中,高频噪声指的是信号中包含的频率较高、幅度较小的杂乱信号。
高频噪声的存在会对信号的质量和准确性产生负面影响,因此去除高频噪声是信号处理中的一个重要环节。
在Matlab中,可以利用滤波器对时域信号进行去除高频噪声的处理。
滤波器是一种可以改变信号频率特性的设备或算法,常用于信号处理中的滤波操作。
Matlab提供了多种滤波器设计方法,包括IIR滤波器和FIR滤波器。
IIR滤波器是一种无限脉冲响应滤波器,具有较窄的通带和较宽的阻带;FIR滤波器是一种有限脉冲响应滤波器,具有较宽的通带和较窄的阻带。
根据信号的特点和要求,选择合适的滤波器类型进行滤波处理。
具体操作步骤如下:1. 导入信号数据:首先需要将待处理的信号数据导入Matlab环境中。
可以使用Matlab提供的文件读取函数,如`load`函数或`importdata`函数,将信号数据加载到Matlab的工作空间中。
2. 信号预处理:在进行滤波处理之前,需要对信号进行预处理。
常见的信号预处理操作包括去除直流分量、归一化处理等。
可以使用Matlab提供的函数,如`detrend`函数和`normalize`函数,对信号进行预处理。
3. 设计滤波器:根据信号的特点和要求,选择合适的滤波器类型,并设计滤波器。
在Matlab中,可以使用`designfilt`函数进行滤波器设计。
根据滤波器类型和设计参数,生成滤波器对象。
4. 滤波处理:利用设计好的滤波器对象对信号进行滤波处理。
可以使用`filter`函数或`filtfilt`函数进行滤波操作。
`filter`函数是一种直接滤波方法,而`filtfilt`函数是一种零相位滤波方法。
根据具体需求选择合适的滤波方法。
matlab notchfilter 函数

在 MATLAB 中,notchfilter函数用于设计数字滤波器,以消除特定频率的噪声
或干扰。
该函数可以帮助用户滤除特定频率的周期性噪声,例如电源线频率的干扰,以改善信号质量。
下面是notchfilter函数的详细解释:
1.语法:
y=notchfilter(x,wo)
y=notchfilter(x,wo,bw)
y=notchfilter(x,wo,bw,fs)
2.参数说明:
A.x:输入信号向量或数组。
B.wo:需要滤除的频率,以归一化的频率表示(即 wo = f/fs,其中 f 是
实际频率,fs 是采样率)。
C.bw:可选参数,带宽(以归一化的频率表示),用于指定滤波器的
带宽。
如果未提供该参数,notchfilter函数会使用默认带宽。
D.fs:可选参数,采样率,以赫兹为单位。
如果未提供该参数,
notchfilter函数会使用默认采样率。
3.输出说明:
y:滤波后的信号向量或数组,具有消除特定频率成分的效果。
4.使用范例:
设计notch滤波器以滤除频率为60Hz的噪声
wo=60/(fs/2);
y=notchfilter(x,wo);
notchfilter函数在 MATLAB 信号处理工具箱中提供,并且用于处理周期性噪声
或干扰。
它是数字滤波器设计中一个有效的工具,能够帮助改善信号的质量和准确性。
基于MATLAB语音信号处理去噪毕业设计论文

基于MATLAB语音信号处理去噪毕业设计论文语音信号在实际应用中通常不可避免地受到噪音的干扰,这使得语音信号的处理变得困难。
因此,在语音信号处理领域,去噪技术一直是一个热门的研究方向。
本文将介绍一种基于MATLAB的语音信号处理去噪方法的毕业设计论文。
本文的主要内容分为以下几个部分。
首先,介绍语音信号处理的背景和意义。
在现实生活中,由于外界环境和设备的限制,语音信号往往会受到各种噪音的污染,如背景噪音、电磁干扰等。
因此,开发一种有效的语音信号处理去噪方法具有重要的实际意义。
其次,介绍基于MATLAB的语音信号处理去噪方法。
本文将采用小波降噪方法对语音信号进行去噪处理。
首先,对输入的语音信号进行小波变换,将信号转换到小波域。
然后,通过对小波系数进行阈值处理,将噪声系数置零,从而实现去噪效果。
最后,通过逆小波变换将信号转换回时域,并输出去噪后的语音信号。
接下来,介绍实验设计和结果分析。
本文将使用MATLAB软件进行实验设计,并选取一组含有不同噪声干扰的语音信号进行测试。
通过对不同噪声信号进行处理,比较不同参数设置下的去噪效果,评估提出方法的性能。
最后,总结全文并展望未来的研究方向。
通过本次研究,我们可以看到基于MATLAB的语音信号处理去噪方法在去除噪音方面具有较好的效果,并具有很大的应用潜力。
然而,该方法仍然有改进的空间。
未来的研究可以在算法优化、参数选择和应用场景等方面进行深入研究,进一步提高语音信号处理去噪的效果和性能。
总的来说,本文介绍了一种基于MATLAB的语音信号处理去噪方法的毕业设计论文。
通过对实验结果的分析和对未来研究方向的展望,本文为从事语音信号处理领域的研究人员提供了一定的参考和启示。
matlab音频降噪课程设计报告

matlab音频降噪课程设计报告燕山大学医学软件课程设计说明书题目:基于MATLAB巴特沃斯滤波器的音频去噪的GUI设计学院(系):电气工程学院年级专业: 13级生物医学工程 2 班学号: 130103040041学生姓名:魏鑫指导教师:许全盛111指导教师签字许全盛基层教学单位主任签字彭勇目录一、设计目的意义 (1)1.1绪论 (1)1.2设计目的 (1)1.3意义 (1)二、设计内容 (2)2.1 设计原理 (2)2.2 设计内容 (2)三、设计过程及结果分析 (3)3.1 设计步骤 (3)3.2 MATLAB程序及结果 (3)3.3 结果分析 (8)四、总结 (9)五、参考文献 (10)12一、设计目的意义1.1 绪论语音是语言的声学表现,是人类交流信息最自然、最有效、最方便的手段。
随着社会文化的进步和科学技术的发展,人类开始进入了信息化时代,用现代手段研究语音处理技术,使人们能更加有效地产生、传输、存储、和获取语音信息,这对于促进社会的发展具有十分重要的意义,因此,语音信号处理正越来越受到人们的关注和广泛的研究。
1.2 设计目的(1)掌握数字信号处理的基本概念,基本理论和基本方法。
(2)熟悉离散信号和系统的时域特性。
(3)掌握序列快速傅里叶变换方法。
(4)学会MATLAB的使用,掌握MATLAB的程序设计方法。
(5)掌握利用MATLAB对语音信号进行频谱分析。
(6)掌握滤波器的网络结构。
(7)掌握MATLAB设计IIR、FIR数字滤波器的方法和对信号进行滤波的方法。
1.3 意义语音信号处理是一门比较实用的电子工程的专业课程,语音是人类获取信息的重要来源和利用信息的重要手段。
通过语言相互传递信息是人类最重要的基本功能之一。
语言是人类特有的功能,它是创造和记载几千年人类文明史的根本手段,没有语言就没有今天的人类文明。
语音是语言的声学表现,是相互传递信息的最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。
Matlab中的噪声抑制与信号增强方法

Matlab中的噪声抑制与信号增强方法噪声是信号处理中经常遇到的问题之一。
当我们从传感器、设备或者其他来源获取的信号受到干扰时,噪声就会影响信号的质量和准确性。
在Matlab中,有许多方法可以抑制噪声并增强信号,从而提高数据的分析和处理效果。
一、噪声的类型在Matlab中进行信号处理时,首先需要了解噪声的类型。
噪声可以分为多种类型,其中包括高斯白噪声、脉冲噪声、高频噪声以及低频噪声等。
不同类型的噪声具有不同的特征和统计分布,因此需要针对不同类型的噪声采取不同的抑制方法。
二、高斯白噪声的抑制高斯白噪声是信号处理中最常见的噪声类型之一。
它具有平均值为0和方差为常数的特点,而且在频谱上具有均匀分布的特点。
在Matlab中,我们可以利用滤波器来抑制高斯白噪声。
滤波器分为低通滤波器、高通滤波器、带通滤波器等多种类型。
根据具体的应用场景和需求,选择合适的滤波器可以有效地抑制高斯白噪声,提高信号的质量。
三、脉冲噪声的抑制脉冲噪声是一种在信号中产生不连续、突然且大幅度变化的噪声。
在Matlab中,我们可以利用中值滤波器对脉冲噪声进行抑制。
中值滤波器的原理是将窗口中的像素值按照大小进行排序,然后取中间值作为输出。
这样可以有效地去除脉冲噪声,保留信号的边缘和细节信息。
四、高频噪声的抑制高频噪声是一种在信号中占主导地位的噪声。
它具有高频振荡的特点,会导致信号的失真和混叠。
在Matlab中,我们可以利用陷波滤波器来抑制高频噪声。
陷波滤波器是一种带阻滤波器,可以通过选择合适的中心频率和带宽来滤除指定频率范围内的噪声。
通过在频谱上设置陷波来消除高频噪声,可以有效提高信号的准确性和清晰度。
五、低频噪声的抑制低频噪声是一种在信号中频率较低且变化缓慢的噪声。
它会降低信号的对比度和细节信息。
在Matlab中,我们可以利用带通滤波器来抑制低频噪声。
带通滤波器是一种只允许通过指定频率范围内信号的滤波器,可以通过选择合适的截止频率来抑制低频噪声,保留信号的高频细节。
基于Matlab的心电信号去噪系统设计

程度, 值越大说明滤波效果越好。
(4)运行时间表示每个滤波算法所消耗的时间,时间越
小说明该算法速度越快。
2.1.4 系统界面
考虑上述功能,在matlab中设计出系统界面,如图3所
示。点击右上方的“输入信号”, 选择需要处理的心电信
号, 点击“添加噪声”可为信号添加任意信噪比的高斯白
噪声。点击下方的滤波器可对含噪心电信号进行滤波处
(a)原始心电信号
(b)加噪心电信号
(c)FIR 低通滤波信号 图 2 心电信号滤波 Fig.2 ECG signal filtering
理。同时, 相应的波形、幅频特性与性能指标均在显示区
自动显示。
2.2 滤波算法设计
2.2.1 FIR滤波
F IR 滤波器的单位冲激相应是有限长的,可以通过
网络结构化简为具有线性相位的网络其系统函数可表
示为:
N 1
H (z) h(n)zn
(1)
n0
在该算法中, 我们利用窗函数法设计F I R 低通数字滤
0 引言
心电信号是从体表记录心脏每一心动周期所产生的 电活动变化的信号, 直接反映心脏的健康状况。心电信号 在采集、放大、检测、记录过程会受到多种噪声的干扰, 包 括基线漂移、肌电噪声、电极接触噪声、运动伪迹等。因此 想要得到较为精准的心电信号用于后续的诊断与治疗, 信号去噪成为了重中之重的任务[1]。
28
Copyright©博看网 . All Rights Reserved.
邓舒涵: 基于 M a t l a b 的心电信号去噪系统设计
2021年第 5 期
2 仿真系统设计
2.1 系统界面设计 2.1.1 信号源 信号源界面中, 用户通过输入信号按钮导入需要处理 的心电信号, 图像显示区会自动产生信号波形图的幅频 特性图像。再单击添加噪声按钮, 可以选择添加任意信噪 比的噪声。 2.1.2 信号滤波 滤波界面中, 包含了数字信号处理常见的滤波器: F I R 低通滤波器, II R 低通滤波器, 均值滤波器, 中值滤波 器, 小波滤波器。可以点击需要的滤波器按钮, 对含噪心 电信号进行滤波。滤波的结果和幅频特性在图像显示区 显示。图2展示了原始心电信号、加噪后心电信号与FIR低 通滤波信号波形。 2.1.3 性能指标 为了客观了解各种滤波器的滤波效果, 在实验中选取 了峰值信噪比、自相关系数、均方差、运行时间四个指标 进行评估, 并在数据显示区显示。 ( 1 ) 峰值信噪比表示信号最大可能功率和破坏性噪声 功率的比值, 滤波后信号的峰值信噪比越大表示失真越 小, 即滤波后信号与原信号越相似[7 ]。 (2)均方差反映数据集的离散程度,滤波后信号的均方 差越小, 说明滤波效果越好。 ( 3 ) 相关系数度表示滤波后信号与滤波前信号的关联
(完整版)心电信号处理昆明理工大学

昆明理工大学信息工程与自动化学院学生实验报告(2016 —20 17 学年第二学期)课程名称:生物医学信号处理开课实验室:设备编号:实验日期:2018年5月30日一、实验目的1、对心电信号的记录、处理、心电信号的特点、心电信号的噪声抑制,工频干扰的抑制与基线纠漂有总体了解。
2、能利用MATLAB GUI设计简单的GUI程序。
二、实验原理1、心电信号的特点:心电信号具有近场检测的特点,离开人体表微小的距离,就基本上检测不到信号;心电信号通常比较微弱,至多为mV量级,且能量主要在几百赫兹以下;干扰即来自生物体内,如肌电干扰、呼吸干扰等,也来自生物体外,如工频干扰,信号拾取时因不良接地等引入的其他外来干扰等;干扰信号与心电信号本身频带重叠(如工频干扰等)。
2、工频干扰抑制:现在使用较多的方法是使用滤波器对工频干扰进行抑制。
3、基线漂移:基线漂移是因呼吸、肢体活动或运动心电图测试所引起的,故这样使得ECG信号的基准线呈现上下飘逸的情况。
三、实验内容1、对心电信号处理主程序:clear;close all;clc;load 100_ECG_0_20 //加载心电信号%%%Eliminate Baseline Drift //消除基线漂移s1=ECG_2; //把心电信号ECG-2赋给s1s2=smooth(s1,150); //利用移动平均法对s1做平滑处理ecgsmooth=s1-s2; //消除基线漂移%%%apply Wavelet Transform //应用小波变换[C,L]=wavedec(ecgsmooth,8,'db4'); //用db4对ecgsmooth进行8层分解,其中返回的近似和细节都存放在C中,L存放是近似和各阶细节系数对应的长度(阶数为4阶)[d1,d2,d3,d4,d5,d6,d7,d8]=detcoef(C,L,[1,2,3,4,5,6,7,8]); //提取小波的细节系数%%%Denoise //降噪,消除干扰[thr,sorh,keepapp]=ddencmp('den','wv',ecgsmooth); //返回小波除噪和压缩后的信号cleanecg=wdencmp('gbl',C,L,'db4',8,thr,sorh,keepapp);//通过门限阈值处理得到小波系数(执行降噪操作)%%%thresholding1 //取阈值max_value=max(cleanecg); //最大值(波峰)mean_value=mean(cleanecg); //最小值(波谷)threshold=(max_value-mean_value)/2; //最大值与最小值差的一半作为阈值%%%R detection algorithm//用R检测算法检测信号a5=appcoef(C,L,'db4',5);//取分解后的近似部分,也就是第5层低频系数C1=[a5;d5;d4;d3]; //L1=[length(a5);length(d5);length(d4);length(d3);length(cleanecg)];R_detect_signal=waverec(C1,L1,'db4'); //用二维小波分解的结果C1,L1重建信号R_detect_squared=R_detect_signal.^2; //对R检测信号求平方%%%Beat_Rate_Extraction_Algorithm //计算心率for a=1:length(R_detect_squared)if R_detect_squared(a)>thresholdR_detect_new(a)=R_detect_squared(a);ElseR_detect_new(a)=0;endendmean_R_detect=5*mean(R_detect_new);for q=1:length( R_detect_new)-1if R_detect_new(q)<mean_R_detectR_detect_new(q)=0;endendd=0;for b=1:length( R_detect_new)-1if ( R_detect_new(b)==0) & ( R_detect_new(b+1)~=0)d=d+1;indext(d)= b+1;endendfs_R_deetect=length(R_detect_new)/20;time=indext.*1/fs_R_deetect;ind=0;for z=1:length(time)-1ind=ind+1;time_diff(ind)=time(z+1)-time(z);endav_time=mean(time_diff);Square_Number=av_time/.2;beat_Rate=300/Square_Number;high=max(R_detect_new);subplot(411);plot(s1);title('Orginal Signal'); //绘制原信号波形图subplot(412);plot(s1-s2);title('Baseline drift Elimination'); //绘制消除基线漂移波形图subplot(413);plot(cleanecg);title('Main Signal'); //绘制消除噪声之后的波形图subplot(414);plot(R_detect_new);title('R detected Signal'); //绘制R检测算法检测信号的波形图text(length(R_detect_new)/2,high,['Beat Rate =',num2str(fix(beat_Rate))],'EdgeColor','red'); //显示心率图1 运行结果在此信号处理过程中用到的处理算法有小波分解以及小波信号重构,用了Daubechies(dbN)小波,Daubechies小波简写为dbN,N是小波的阶数。
基于MATLAB的工频干扰陷波器设计

6NOPNM 以其强大的数据处理功能和丰富的工具箱,使得其
编程极为简单,可大大提高应用程序的开发周期,提高编程的效 率。以所设计的 /012 陷波器为例, 利用 6NOPNM 实现的程序长度 不到 S0 条语句, 而用 T99语言编写同样功能的程序则需要上百条 因而执 语句。但另一方面, 由于 6NOPNM 语言是一种解释性语言, 行效率低, 执行速度较慢, 因而在实时控制和用户界面设计方面逊 于其它语言。好在 6NOPNM 最新版本已经提供了同其它编程语言 在脱离 6NOPNM 的接口工具, 使得 6NOPNM 环境下编辑的程序, 环境时也能够为其它应用程序所调用, 关于 6NOPNM 与其它 编程
中, 用 R%+J)D 函数对心电数据进行滤波, 滤波器的系数为 HIJ"4, 滤波后的数据存于变量 )"Q 中, R%+J)D 函数的调用格式为: (HIJ"4 , )"Q#R%+J)D 8, B)"Q ) (S ) 滤波前后的心电图波形如图 S 所示。从图中可以看到 心电波形没有明显的失真 /012 的工频干扰基本被 滤 除 干 净 , 现象, 证明滤波器的设计是正确的。
人体心电信号频率在 $#$%K!$$&’ 范围内 - 幅度为 !$!LM胎 儿NK%=LM成人N, 由于信号幅度特别低, 极易受外界环境的干扰, 因此, 在心电信号的预处理中-消除噪声干扰, 特别是 %$&’ 工频 可以用 干扰尤为重要。%$&’ 陷波滤波器的设计方法多种多样, 硬件实现, 但实现的过程比较困难; 也可以用软件的方法编程 实现, 如小波变换滤波、 自适应滤波、 模板匹配滤波等, 但这些 方法实现需要手工计算获得滤波器的参数, 运算比较复杂。利 用 (>:<D/2O; 公司开发的高性能数值计算和可视化工具 ()*P +),-可以方便有效地设计符合要求的陷波滤波器。 5 材料与方法 59A 心电数据的获取 本研究所采用的数据,是通过自行研制的 基 于 Q@R 接 口 的数据采集卡,对 ?@AIS%!! 心电 图 机 的 心 电 信 号 输 出 接 口 采样获得。采样频率 (T;) 为 U$$&’, ) V W 转 换 数 据 宽 度 为 !S 位。采样时人为将心电图机的工频滤波功能去掉, 获得带工频 干扰的心电信号, 以数据文件格式保存。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 燕山大学 课 程 设 计 说 明 书
题目:基于matlab的肌电信号工频干扰的消除
学院(系): 电气工程学院 年级专业: 09级测控仪表 2
燕山大学课程设计(论文)任务书 院(系):电气工程学院 基层教学单位:自动化仪表系 学 号 学生姓名 专业(班级)
设计题目 基于matlab的肌电信号工频干扰的消除 设 计 技 术 参 数 采样频率: fs=1000HZ 干扰频率:f=50HZ(100HZ,150HZ,200HZ,250HZ„) 滤波器参数: 通带最大波纹Rp 阻带最小衰减Rs 通带边界频率wp 阻带边界频率ws 最小阶数N 截止频率Wc
设 计 要 求
设计一个梳妆滤波器,用于滤除肌电采集信号中的50Hz工频及其谐波干扰,分析所涉及滤波器的频响,比较滤波前后的时域波形和频谱特性。肌电信号的采样频率为1000Hz。
工 作 量
1 对原信号进行频谱分析;
2 设计滤波器并对其进行频谱分析;
3 用滤波器处理原始信号,并进行滤波分析;
4 设计显示界面。
工 作 计 划
周一:分析处理原始信号: 周(二 三):设计滤波器并对其进行频谱分析; 周四:用滤波器处理原始信号,并进行滤波分析; 周五:设计显示界面并整论文。
参 考 资 料
1.谢平、王娜、林洪斌等主编,信号处理原理及应用。北京:机械工业出版社, 2.宋爱国、刘文波等主编,测试信号分析与处理。北京:机械工业出版社,2005,9 3.聂祥飞、王海宝、谭泽富主编,Matlab程序设计及其在信号处理中的应用。成都:西南交通大学出版社,2005 4.吴大正、高西全等主编,Matlab及在电子信息课程中的应用。北京:电子工业出版社,2006.3 李培芳、孙晖、李江主编,信号与系统分析基础。北京:清华大学出版社,2006.12 指导教师签字 谢平 吴晓光 基层教学单位主任签字 谢平 2012年 6 月 29日 燕山大学课程设计评审意见表 指导教师评语:
工作态度认真较认真不认真理论分析正确完善较为合理一般较差方法设计
完善
合理一般
较差 成绩:
指导教师: 谢平 吴晓光 2012年 6 月 29 日
答辩小组评语: 工作态度认真较认真不认真理论分析正确完善较为合理一般较差方法设计
完善
合理一般
较差 成绩:
组长: 2012年 6 月 29 日 课程设计总成绩: 答辩小组成员签字:
2012年 6 月 29 日 4
摘 要 肌电信号是产生肌肉力的电信号根源,它是肌肉中很多运动单元动作电位在时间和空间上的叠加,反映了神经,肌肉的功能状态,在基础医学研究、临床诊断和康复工程中有广泛的应用。 梳状滤波器它是由许多按一定频率间隔相同排列的通带和阻带,只让某些特定频率范围的信号通过。梳状滤波器其特性曲线象梳子一样,故称为梳状滤波器。 本文主要介绍使用梳状滤波器消除在检测和记录肌电信号时噪声和干扰的影响,如50HZ的工频及其谐波,并使用MATLAB软件对原信号、滤波器、处理信号进行频谱分析,观察其频谱特性。
关键词:梳状滤波器;MATLAB;频谱分析 目 录 第一章 设计过程 „„„„„„„„„„„„„„„„„„„„„6 1.1滤波器设计结构图„„„„„„„„„„„„„„„„„„6 1.2设计滤波器步骤„„„„„„„„„„„„„„„„„„„6 第二章 MATLAB的应用„„„„„„„„„„„„„„„„„„„„6 2.1MATLAB语言简介„„„„„„„„„„„„„„„„„„6 2.2一些函数及指令简介„„„„„„„„„„„„„„„„„7 第三章 程序和仿真图„„„„„„„„„„„„„„„„„„„„9 3.1滤波器设计程序及仿真图„„„„„„„„„„„„„„„9 3.2原始信号的频谱分析„„„„„„„„„„„„„„„„„11 3.3信号滤波的程序设计及频谱分析„„„„„„„„„„„„12 第4章 学习心得„„„„„„„„„„„„„„„„„„„„„„16 参考文献 „„„„„„„„„„„„„„„„„„„„„„„„„17
第一章 设计过程 1.1滤波器设计结构图 椭圆滤波器设计结构图如图所示: 连续混合 输出 信号
图4.1结构框图 1.2设计数字滤波器的步骤 1.确定数字滤波器的性能指标:Wp、Ws、Rp、Rs、N、Wc。 2. 将数字滤波器的性能指标转化成相应模拟滤波器的性能指标。 3.设计满足指标要求的模拟滤波器Ha(s)。 4.通过变换将模拟滤波器转换成数字滤波器 4.数字滤波器的MATLAB实现和频谱分析
第二章 MATLAB的应用 2.1 MATLAB语言简介 MATlAB是在20世纪80年代初期,由美国的MathWorks软件开发公司正式推出的一种数学工具软件。它以矩阵运算为基础,把计算、可视化、程序设计有机地融合到了一个简单易学的交互式工作环境中,其出色的数值计算能力和强大的图形处理功能得到了广大科研人员和工程技术人员的垂青。它拥有功能全面的函数库,他把大量的函数封装起来,让用户脱离了繁琐复杂的程序设计过程,只需要将精力集中到模型的建立和工作上即可,大大提高了工作效率。利用MATLAB可以实现科学计算、符号运算、算法研究、数学建模和仿真、数据分析和可视化、科学工程绘图以及图形用户界面设计等强大功能。更重要的是,MATLAB提供了图形用户界面(GUI)设计功能,用户可以自行设计别具风格的人机交互界面。此外,MATLAB提供了与C语言或Fortran语言的交互操作,是用户能通过程序接口很方便地进行程序间的调用和转换。 2.2一些函数及指令简介
采样 (1000HZ) 梳状滤波
器 MATLAB的信号处理工具箱提供了设计椭圆滤波器的函数:ellipord函数、ellip函数、filter函数、freqz函数、fft函数和abs函数。 1. ellipord函数的功能是求滤波器的最小阶数,其调用方式为: [n,wp]=ellipord(wp,ws,rp,rs) n-椭圆数字滤波器最小阶数; wp-椭圆滤波器通带截止角频率; ws-椭圆滤波器阻带起始角频率; rp-通带最大衰减量也即通带波纹(dB); rs-阻带最小衰减量(dB); 这里wp、ws都是归一化频率,即0wp(或ws)1,1对应弧度。 2. ellip函数的功能是用来设计椭圆滤波器,其调用方式为: (1)[b,a]=ellip(n,rp,rs,wp) rp用来指定通带内波纹的最大衰减; rs用来指定阻带内波纹的最小衰减; 在这里,wp的取值范围是(0.0,1.0),其中1对应于0.5Fs,Fs为采样频率。 (2)[b,a]=ellip(n,rp,rs,wp,'high'):设计高通椭圆滤波器。上述返回的向量b和a的维数都是n+1,而不是n。
filter函数功能:利用IIR滤波器和FIR滤波器对数据进行滤波,其调用方式为: y=filter(b,a,x):计算输入信号X的滤波输出,向量b和a分别是所采用的滤波器的分子系数向量和滤波器的分母系数向量。 [y,zf]=filter(b,a,x,zi):参数zi指定滤波器的初始条件值,其大小为zi=max(length(a),length(b))-1。 y=filter(b,a,x,[],dim)或y=filter(b,a,x,zi,dim):参数dim指定滤波的维数。 filter采用数字滤波器对数据进行滤波,其实现采用移位直接Ⅱ型结构,因而 适用于IIR和FIR滤波器。滤波器的系统函数为 nnmmzazazazazbzbzbzbbZH33221133221101)( 即滤波器系数a=[a0 a1 a2 ...an],b=[b0 b1 ...bm],输入序列矢量为x。
这里,标准形式为a0=1,如果输入矢量a时,a0≠1,则MATLAB将自动进行归一化系数的操作;如果a0=0,则给出出错信息。 4. freqz函数功能:求解数字滤波器频率响应,其调用方式为: (1)[h,w]=freqz(b,a,n):返回数字滤波器的n点复频率响应,输入参数b和a分别是滤波器系数的分子和分母向量;输出参数h是复频率响应,w是频率点。输入参数n的默认值为512。 (2)h=freqz(b,a,w):计算由向量w(单位为rad/sample,范围为[0,])指定的频率点的复频率响应。 (3)[h,f]=freqz(b,a,n,Fs):同时输出实际频率点。用于对H(ejω)在[0,Fs/2]上等间隔采样n点,采样点频率及相应频响值分别记录在f 和h中。由用户指定FS(以HZ为单位)值。 (4)h=freqz(b,a,f,Fs):计算由向量f指定的频率点的复频率响应。 5. Abs函数 调用方式为: Y=abs(x):计算x各元素的绝对值。当x为一个复数的时候,则计算x的复数模。
第三章 程序和仿真图 3.1滤波器设计程序及仿真图 wp1=45;wp2=55;ws1=49.9; ws2=50.1; rp=0.3;rs=40;Fs=1000; wp=[wp1,wp2]/(Fs/2);ws=[ws1,ws2]/(Fs/2); [N,wc]=ellipord(wp,ws,rp,rs,'z'); [num,den]=ellip(N,rp,rs,wc,'stop'); [H1,W1]=freqz(num,den); %50HZ滤波 wp1=95;wp2=105;ws1=99.9; ws2=100.1; rp=0.3;rs=40;Fs=1000; wp=[wp1,wp2]/(Fs/2);ws=[ws1,ws2]/(Fs/2); [N,wc]=ellipord(wp,ws,rp,rs,'z');
ws2=150.1; rp=0.3;rs=40;Fs=1000; wp=[wp1,wp2]/(Fs/2);ws=[ws1,ws2]/(Fs/2); [N,wc]=ellipord(wp,ws,rp,rs,'z'); [num,den]=ellip(N,rp,rs,wc,'stop'); [H3,W3]=freqz(num,den); %150HZ滤波 wp1=195;wp2=205;ws1=199.9; ws2=200.1; rp=0.3;rs=40;Fs=1000; wp=[wp1,wp2]/(Fs/2);ws=[ws1,ws2]/(Fs/2); [N,wc]=ellipord(wp,ws,rp,rs,'z'); [num,den]=ellip(N,rp,rs,wc,'stop');