基于MATLAB的滤波器课程设计

合集下载

基于Matlab的IIR数字滤波器设计脉冲响应不变法

基于Matlab的IIR数字滤波器设计脉冲响应不变法

课程设计说明书题目:基于Matlab的IIR数字滤波器设计课程设计(论文)任务书院(系)基层教学单位说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。

摘要数字滤波是数字信号处理的重要容,是由乘法器、加法器和单位延时器组成的一种运算过程,其功能是对输人离散信号进行运算处理,以达到改变信号频谱的目的。

数字滤波器根据频域特性可分为低通、高通、带通和带阻四个基本类型。

本文用脉冲响应不变法设计的一个满足指标的巴特沃斯IIR滤波器,利用了一种基于Matlab软件的数字滤波器设计方法,完成了低通,高通,带通,帯阻IIR滤波器的设计, 文中深入分析了该滤波器系统设计的功能特点、实现原理以及技术关键,阐述了使用MATLAB进行带通滤波器设计及仿真的具体方法。

最后把整个设计方案用GUIDE界面制作并演示出来。

文章根据IIR滤波器的设计原理,重点介绍巴特沃斯数字滤波器的设计方法和操作步骤,并以实例形式列出设计程序。

关键词:信号巴特沃斯Matlab IIR滤波器脉冲响应不变法目录摘要 (3)目录 (4)第一章绪论 (5)1.1信号数字现状与数字滤波器意义 (5)1.2 设计平台 (6)1.3数字滤波器概述 (6)第二章 IIR数字滤波器的设计 (7)2.1 IIR滤波器的基本结构 (7)2.2 滤波器的性能指标 (10)2.3 IIR数字滤波器的设计方法 (11)2.4巴特沃斯滤波器。

(13)第三章 IIR频率响应滤波器的实例 (15)3.2 用脉冲响应不变法设计IIR低通数字滤波器实例 (15)3.2 用脉冲响应不变法设计IIR高通数字滤波器实例 (17)3.3 用脉冲响应不变法设计IIR带通数字滤波器实例 (19)3.4 用脉冲响应不变法设计IIR帯阻数字滤波器实例 (21)3.5(附)滤波信号的输入 (24)3.6 滤波的效果........................................................................... (24)第四章界面设计 (25)4.1主界面 (25)4.2 软件功能及使用方法 (26)总结 (27)程序清单 (29)第一章绪论1.1信号数字现状与数字滤波器意义当今,数字信号处理[1] (DSP:Digtal Signal Processing)技术正飞速发展,它不但自成一门学科,更是以不同形式影响和渗透到其他学科:它与国民经济息息相关,与国防建设紧密相连;它影响或改变着我们的生产、生活方式,因此受到人们普遍的关注。

基于MATLAB的数字滤波器设计

基于MATLAB的数字滤波器设计

唐山学院数字信号处理课程设计题目基于MATLAB的数字滤波器设计系 (部) 信息工程系班级 10通信本2姓名学号指导教师2013 年 1 月 7 日至 1 月 11 日共 1 周数字信号处理课程设计任务书课程设计成绩评定表目录1 绪论 (1)2数字滤波器的设计 (2)2.1数字滤波器的基本概念 (2)2.2利用双线性变换法设计IIR数字滤波器 (2)3课程设计的具体实现 (3)3.1对语音信号进行滤波的滤波器设计 (3)3.1.1 IIR数字滤波器的流程图 (3)3.1.2IIR低通滤波器设计 (3)3.1.3 IIR高通滤波器设计 (5)3.1.4IIR带通滤波器设计 (7)3.2对合成信号进行滤波的滤波器设计 (8)3.2.1设计目的和要求 (8)3.2.2合成信号的程序设计 (8)3.2.3合成信号的频谱程序设计 (9)3.2.4低通滤波器设计 (10)3.2.5 IIR带通滤波器设计 (11)3.2.6IIR高通滤波器滤波 (13)4软件简介 (15)4.1系统界面设计工具—GUI概述 (15)4.2界面设计及使用说明 (15)5结论 (17)6 致谢 (18)参考文献 (19)附录 (20)1 绪论与模拟滤波器相对应,在离散系统中广泛应用数字滤波器。

它的作用是利用离散时间系统的特性对输入信号波形或频率进行加工处理。

或者说,把输入信号变成一定的输出信号,从而达到改变信号频谱的目的。

数字滤波器一般可以用两种方法来实现:一种方法是用数字硬件装配成一台专门的设备,这种设备称为数字信号处理机;另一种方法就是直接利用通用计算机,将所需要的运算编成程序让通用计算机来完成,即利用计算机软件来实现。

模拟滤波器在测试系统或专用仪器仪表中是一种常用的变换装置。

例如:带通滤波器用作频谱分析仪中的选频装置;低通滤波器用作数字信号分析系统中的抗频混滤波;高通滤波器被用于声发射检测仪中剔除低频干扰噪声;带阻滤波器用作电涡流测振仪中的陷波器,等等。

MATLAB滤波器课程设计

MATLAB滤波器课程设计

课程设计题目滤波器的设计与比较指导老师张丽红学院周口师院专业班级物理系 08电子课程内容第一部分-----------------------------------------------------------------------------概述一、模拟滤波器的设计二、模拟滤波器到各滤波器的频率变化三、巴特沃斯滤波器四、切比雪夫滤波器五、椭圆滤波器第二部分-----------------------------------------------------------------------------总体技术及分析一、模拟滤波器设计实现二、模拟滤波器的转化及数字滤波器设计第三部分-----------------------------------------------------------------------------程序实现及图形一、各种程序二、图形三、结论及分析第四部分-----------------------------------------------------------------------------总结一、程序设计中的问题二、解决办法三、分析第五部分-----------------------------------------------------------------------------涉及的知识内容一、函数的调用二、时域及频域的采样第一部分概述一、模拟滤波器1、模拟滤波器按幅度特性可分为低通,高通,带通和带阻滤波器,但我们设计滤波器时,总是先设计低通滤波器,再通过频率变换将低通滤波器转换成希望的滤波器。

2、模拟滤波器的理论和设计方法已发展的相当成熟。

且有若干典型的模拟滤波器供我们选择,如巴特沃斯(Butterworth)滤波器,切比雪夫(Chebyshev)滤波器,椭圆(Ellipse)滤波器,贝塞尔(Bessel)滤波器等,这几种滤波器各有特点,巴特沃斯滤波器具有单调下降的幅频特性;切比雪夫滤波器的幅频特性在通带或阻带有波动,可以提高选择性;贝塞尔滤波器通带内有较好的线性相位特性;椭圆滤波器的选择性相对前三种是最好的。

基于matlab的滤波器设计

基于matlab的滤波器设计

光电图像课程设计报告书课题名称基于matlab的滤波器设计图像复原的MATLAB实现1课程设计目的〔1〕了解基于matlab的滤波器处理及其根本操作;〔2〕学习MATLAB在滤波器中的使用;〔3〕提高学习与解决问题的能力。

2课程设计根本内容2.1滤波器的根本原理设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H〔z〕具有指定的频率特性。

数字滤波器从实现的网络构造或者从单位冲激响应分类,可以分成无限单位冲激响应〔IIR〕数字滤波器和有限长单位冲激响应〔FIR〕数字滤波器。

数字滤波器频率响应的三个要素:(1)幅度平方响应(2)相位响应(3)群时延响应IIR数字滤波器:IIR数字滤波器的系统函数为有理分数,即IIR数字滤波器的逼近问题就是求解滤波器的系数和,使得在规定的物理意义上逼近所要求的特性的问题。

如果是在s平面上逼近,就得到模拟滤波器,如果是在z平面上逼近,则得到数字滤波器。

FIR数字滤波器:设FIR的单位脉冲响应h〔n〕为实数,长度为N,则其z变换和频率响应分别为按频域采样定理FIR数字滤波器的传输函数H(z)和单位脉冲响应h〔z〕可由它的N歌频域采值H(k)唯一确定。

MATLAB中提供了几个函数,分别用于实现IIR滤波器和FIR滤波器。

(1)卷积函数conv,调用格式为,c=conv〔a,b〕该格式可以计算两向量a和b的卷积,可以直接用于对有限长信号采用FIR滤波器的滤波。

(2)函数filter的调用格式为,y=filter〔b,a,*〕该格式采用数字滤波器对数据进展滤波,既可以用于IIR滤波器,也可以用于FIR滤波器。

其中向量b和a分别表示系统函数的分子,分母多项式的系数,假设a=1,此时表示FIR滤波器,否则就是IIR滤波器。

该函数就是利用给出的向量b和a,对*中的数据进展滤波,结果放入向量y。

(3)函数fftfilt的调用格式为,y=fftfilt〔b,*〕该格式是利用基于FFT的重叠相加法对数据进展滤波,这种频域滤波技术只对FIR滤波器有效。

基于MATLAB函数的滤波器设计技术ppt课件

基于MATLAB函数的滤波器设计技术ppt课件

ellip 满足一样要求所需阶次最低,一样目的〔n,Rp,Rs〕过渡带最窄
10-Rp/20 10-Rs/20 10-Rp/20
yulewalk:
基于最小均方意义的递归滤波器设 计函数
• [b,a]=yulewalk(n,f,m) • designs recursive IIR digital filters using a least-squares fit to a
常用四类IIR滤波器
• 巴特沃斯〔设计函数butter/buttap/buttord〕 • 切比雪夫I型
〔设计函数cheb1ap/cheby1/cheby1ord〕 • 切比雪夫II型
〔设计函数cheb2ap/cheby2/cheby2ord〕 • 椭圆
〔设计函数ellipap/ellip/ellipord〕
• [z,p,k]=cheb2ap(n,Rp) • 参数含义:
n-阶数 Rs-阻带波纹系数(dB) • 前往变量: z,p,k-零点、极点、增益
cheby2: 切比雪夫Ⅱ型低通滤波器设计函数
• [b,a]=cheby2(n,Rs,Wn) • [b,a]=cheby2(n,Rs,Wn,’ftype’) • [b,a]=cheby2(n,Rs,Wn,’s’) • [b,a]=cheby2(n,Rs,Wn,’ftype’,’s’) • [z,p,k]=cheby2(…) • [A,B,C,D]=cheby2(…) • 参数含义:
ellipord: 切比雪夫I型滤波器的阶数计算函数
• [n,Wn]=ellipord(Wp,Ws,Rp,Rs)
• [n,Wn]=ellipord(Wp,Ws,Rp,Rs,’s’)
• 参数含义: Wp-通带转机频率 Ws-阻带转机频率 Rp-通带波纹系数 Rs-阻带衰减系数

基于matlab的FIR和IIR滤波器课程设计说明书

基于matlab的FIR和IIR滤波器课程设计说明书

基于matlab的FIR和IIR滤波器目录1引言 (1)1.1 MATLAB的介绍 (2)1.2 CCS的介绍 (2)2设计要求 (4)3 FIR滤波器设计 (5)3.1 FIR滤波器的Matlab设计 (5)3.1.1 FIR滤波器参数的设计 (5)3.1.2 检验方波的Matlab设计 (6)3.1.3 正弦叠加信号的Matlab设计 (7)3.2 FIR滤波器的CCS设计 (8)3.2.1 FIR滤波器的CCS设计程序 (10)3.2.2 CCS波形仿真图 (12)4 IIR滤波器设计 (15)4.1 IIR滤波器的Matlab设计 (15)4.1.1 IIR滤波器参数的设计 (15)4.1.2 检验方波的Matlab设计 (16)4.1.3 正弦叠加信号的Matlab设计 (17)4.2 IIR滤波器的CCS设计 (19)4.2.1 IIR滤波器的CCS程序设计 (19)4.2.2 CCS波形仿真图 (23)结束语 (25)参考文献 (26)1引言数字信号处理(Digital Signal Processing),或者说对信号的数字处理(包括对信号进行采集、变换、滤波、估值、增强、压缩、识别等),是20世纪60年代前后发展起来的并广泛应用于多领域的新兴学科。

当今,数字信号处理技术正飞速发展,它不但自成一门学科,更是以不同形式影响和渗透到其他学科;它与国民经济息息相关,与国防建设紧密相连;它影响或改变着我们的生产、生活方式,因此受到人们普遍的关注。

数字化、智能化和网络化是当代信息技术发展的大趋势,而数字化是智能化和网络化的基础,实际生活中遇到的信号多种多样,例如广播信号、电视信号、雷达信号、通信信号、导航信号等等。

上述这些信号大部分是模拟信号,也有小部分是数字信号。

模拟信号是自变量的连续函数,自变量可以是一维的,也可以是二维或多维的。

大多数情况下一维模拟信号的自变量是时间,经过时间上的离散化(采样)和幅度上的离散化(量化),这类模拟信号便成为一维数字信号。

基于MATLAB的IIR滤波器的设计和应用(信号去噪)

基于MATLAB的IIR滤波器的设计和应用(信号去噪)

数字信号处理课程设计报告书课题名称基于MATLAB 的IIR 滤波器的设计及应用(信号去噪)姓 名 学 号院、系、部 电气工程系 专 业 电子信息工程 指导教师2013年 6 月28日※※※※※※※※※ ※※※※ ※※ ※※※※※※※※※2010级数字信号处理 课程设计基于MATLAB 的IIR 滤波器的设计及应用(信号去噪)一、实验目的1.学会MATLAB 的使用,掌握MATLAB 的程序设计方法。

2.掌握数字信号处理的基本概念、基本理论和基本方法。

3. 在MATLAB 环境下产生噪声信号。

4.掌握MATLAB 设计IIR 数字滤波器的方法。

5.学会用MATLAB 对信号进行分析和处理。

二、实验原理数字滤波器的设计:巴特沃斯(Butterworth)滤波器的幅度平方函数用下式表示: ()Nc j H 2211⎪⎪⎭⎫ ⎝⎛ΩΩ+=Ω∂ (2.1)式中,N 为滤波器的阶数,幅度下降的速度与N 有关,N 越大,通带越平坦,过渡带越窄,总的频响特性与理想低通滤波器的误差越小。

切比雪夫(Chebyshev)滤波器的幅频特性在通带或者阻带有等波纹特性,可以提高选择性,其幅度平方函数用下式表示:()⎪⎪⎭⎫ ⎝⎛ΩΩ+=Ω∂PN C j H 22211ε (2.2) 式中,ε为小于1的正数,表示通带幅度波动的程度,ε越大,波动幅度也越大,Ωp 称为通带截止频率。

椭圆(Ellipse)滤波器的通带和阻带呈现等波纹幅频特性时,通带和阻带波纹幅度越小,过渡带就越宽。

所以椭圆滤波器的阶数由通带边界频率、阻带边界频率、通带边界衰减、阻带边界衰减共同决定。

三、主要实验仪器及材料微型计算机、MATLAB6.5教学版四、实验内容1.噪声信号的频谱分析。

2.设计数字滤波器和画出频率响应:低通滤波器性能指标,fp=1000Hz ,fs=1800 Hz , As=100dB ,Ap=1dB ; 在MATLAB 中,可以利用函数butte 、cheby1和ellip 设计IIR 滤波器;最后,利用MATLAB 中的函数freqz 画出各滤波器的频率响应。

低通滤波器matlab课程设计

低通滤波器matlab课程设计

低通滤波器matlab课程设计一、课程目标知识目标:1. 理解低通滤波器的原理和数学模型;2. 掌握使用MATLAB进行低通滤波器的设计与实现;3. 学会分析低通滤波器的频率特性及其在实际应用中的作用。

技能目标:1. 能够运用MATLAB软件设计不同类型的低通滤波器;2. 能够通过调整滤波器参数,优化滤波效果;3. 能够利用所学的知识解决实际信号处理问题。

情感态度价值观目标:1. 培养学生对信号处理领域的兴趣,激发学习热情;2. 培养学生严谨的科学态度,注重实验数据的真实性;3. 培养学生的团队协作意识,提高沟通与交流能力。

课程性质:本课程为电子信息工程及相关专业的高年级学生设计,结合了理论知识与实践操作。

课程以低通滤波器的设计为主线,通过MATLAB软件的运用,使学生更好地理解信号处理技术。

学生特点:学生已具备一定的电路基础和MATLAB编程能力,具有较强的学习能力和动手实践能力。

教学要求:课程要求学生在掌握低通滤波器理论知识的基础上,通过MATLAB 软件实现滤波器的设计与优化。

教学过程中注重培养学生的实际操作能力和问题解决能力,将理论知识与实际应用紧密结合。

通过课程学习,使学生能够达到上述课程目标,为后续相关课程打下坚实基础。

二、教学内容1. 理论知识:- 低通滤波器的基本概念与分类;- 低通滤波器的传递函数与频率特性分析;- MATLAB环境下滤波器设计的基本原理。

2. 实践操作:- 使用MATLAB设计不同类型的低通滤波器(如巴特沃斯、切比雪夫等);- 分析和调整滤波器参数,观察滤波效果的变化;- 对实际信号进行处理,验证滤波器的性能。

3. 教学大纲:- 第一周:低通滤波器的基本概念与分类,介绍相关教材章节;- 第二周:低通滤波器的传递函数与频率特性分析,结合教材相关内容;- 第三周:MATLAB环境下滤波器设计原理,结合教材实例进行讲解;- 第四周:实践操作,指导学生使用MATLAB设计低通滤波器,并进行性能分析;- 第五周:课程总结与作业布置,巩固所学知识。

基于MATLAB的数字滤波器的设计

基于MATLAB的数字滤波器的设计

基于MATLAB 的数字滤波器的设计1 引言数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散线性非时变系统,其输入是一组(由模拟信号取样和量化的)数字量,其输出是经过变换或说处理的另一组数字量。

数字滤波器具有稳定性高、精度高、灵活性大等突出优点。

这里所说的数字滤波器是指理想带通,低通等的频率选择数字滤波器。

数字滤波器设计的一个重要步骤是确定一个可实现的传输函数H(z),这个确定传输函数H(z)的过程称为数字滤波器设计。

数字滤波器的一般设计过程为:(1)按照实际需要,确定滤波器的性能要求(通常在频域内给定数字滤波的性能要求)。

(2)寻找一满足预定性能要求的离散时间线性系统。

(3)用有限精度的运算实现所设计的系统。

(4)通过模拟,验证所设计的系统是否符合给定性能要求。

2 数字滤波器的设计滤波器分为两种,分别为模拟滤波器和数字滤波器。

数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化的过程中,使信号按预定的形式变化。

数字滤波器有多种分类,从数字滤波器功能上分可分为低通、高通、带阻、带通滤波器,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应滤波器(IIR )和有限长冲激响应滤波器(FIR )。

数字滤波器指标:一般来说,滤波器的幅频特性是分段常数的,以低通为例,在通带内逼近于1,阻带内逼近与0,实际设计的滤波器并非是锐截止的通带和阻带两个范围,两者之间总有一个过渡带。

在设计滤波器时事先给定幅频特性允许误差,在通带范围内幅度响应以误差逼近于1,在阻带内幅1σ度响应以误差逼近于0。

2σ (1)πσσ≤≤≤≤≤≤-w w e H w w e H r jwc jw ,2|)(|,1|)(|11式中wc 和wr 分别为通带边界频率和阻带边界频率,wr-wc 为过渡带。

在具体的技术指标中往往用通带波动来表示,用最小阻带衰减At 来表示,其具体的对应公式这里就不详述了。

基于matlab的IIR数字滤波器设计

基于matlab的IIR数字滤波器设计

基于matlab的IIR数字滤波器设计一.IIR数字滤波器介绍1.IIR数字滤波器的根本原理所谓数字滤波器,是指输入,输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相比照例或者滤除某些频率成分的硬件。

实质上就是一个由有限精度算法实现的线性时不变离散系统。

它的根本工作原理是利用离散系统的特性对系统输入信号进展加工和变换,改变输入序列的频谱或信号波形,让有用的频率分量通过,抑制无用的信号分量输出,因此数字滤波与模拟滤波的概念一样,根据其频率特性同样可以分为低通,高通,带通,带阻,只是信号的形式和实现滤波方式有所不同。

如果要处理的信号是模拟信号,就可以通过A/D或者D/A转换,在信号形式上进展匹配转换,同样可以使用数字滤波器对模拟信号进展滤波。

数字滤波器滤波的数学表达式:y〔n〕=x(n)*h(n); 如果滤波器的输入输出信号都是离散信号,那么该滤波器的脉冲响应也一定是离散信号,这样的滤波器就成为了数字滤波器。

上面的系统为时域离散系统时,其频域特性为:其中分别是数字滤波器的输出序列和输入序列的频域响应,是数字滤波器的频域响应。

可以看见按照输入信号的频谱特点和处理信号的目的适中选择滤波器的频域响应,使得滤波后的输出信号满足设计性能要求,就是滤波器的滤波原理。

2.IIR数字滤波器传输特性IIR数字滤波器的系统函数可以表示为:H(Z)=,式中H(Z)称为N阶IIR滤波器函数。

3..数字滤波器的技术要求.我们通常设计的数字滤波器一般属于选频滤波器,。

我们的目的是要设计一个因果可实现的滤波器,另外买也要考虑到本钱和复杂性问题,因此实用中通带和阻带都允许一定的误差容限,即通带不一定是完全水平的,阻带也不可能完全衰减到零。

而且,通带和阻带之间还要设置一定带宽的过渡带。

如如下图表示低通滤波器的技术要求:图中,分别表示通带截止频率和阻带截止频率,通带频率范围为0≤w≤,通带中要求〔1-δ1〕≤|H≤1,阻带截止频率范围≤w≤Π,再阻带中要求≤δ2,从p w 到s w 称为过渡带,在这个频带内,幅度响应从通带平滑的下落到阻带。

数字信号处理课程设计基于matlab的滤波器的设计

数字信号处理课程设计基于matlab的滤波器的设计

《数字信号处理》课程设计报告(基于matlab的滤波器的设计)专业:通信工程班级:学号:姓名:指导教师:2012 年月日目录一、概述 (3)1、题目意义 (3)2、所做工作 (3)3、系统功能 (3)二、滤波器原理 (3)三、软件设计流程 (7)1、语音信号的采集 (7)2、语音信号频谱及加噪 (8)3、信号经低通滤波器滤波 (10)4、信号经带通滤波器滤波 (11)5、信号经高通滤波器滤波 (12)6、比较滤波前后的信号并分析 (13)7、回放语音信号 (15)四、源程序代码及整体波形 (15)五、心得体会 (17)(要求:给出一级目录,宋体加粗,四号字,倍行距。

)一、概述1)题目意义本次课程设计的要求是基于matlab的滤波器的设计,而滤波器又可分为IIR滤波器和FIR滤波器。

我所采用的是IIR滤波器的设计,通过对语音信号的采集、加噪,然后通过所设计的滤波器滤波,通过回放语音信号,并与原始信号作比较来检验所设计滤波器的特性。

2)所做工作此次课程设计中所做的最主要的也是最耗时工作就是滤波器的设计,其次就是采集语音信号,并对语音信号的滤波,这是这次实验的主要步骤。

最后将原语音信号与滤波后的语音信号的时域波形和频谱分别进行比较,并作了分析。

3)系统功能因对语音信号加噪后如不进行滤波会产生很大的失真,滤波器的作用会把滤波器工作频率以外的频谱成分滤除掉,可较好的回复原语音信号,滤波器的作用在实际工作中的作用也如此,如要传输的信号通过信道后会叠加上高斯白噪声,在解调之前可先通过BPF滤除BPF以外的噪声。

二、滤波器原理1)FIR和IIR数字滤波器的选择数字滤波器根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即无限冲击响应IIR滤波器和有限冲击响应FIR滤波器。

IIR滤波器设计方法有间接法和直接法,间接法是借助于模拟滤波器的设计方法进行的。

其设计步骤是:先设计过渡模拟滤波器得到系统函数H(s),然后将H(s)按某种方法转换成数字滤波器的系统函数H(z)。

实验5 基于Matlab的数字滤波器设计

实验5  基于Matlab的数字滤波器设计

实验五 基于Matlab 的数字滤波器设计实验目的:加深对数字滤波器的常用指标和设计过程的理解。

实验原理:低通滤波器的常用指标如下所述,其典型规格如下:⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧≤≤≤≤+≤≤-πδδδw w e G w w e G s s jw p p jw p ,)(,1)(1 通带边缘频率:p ϖ阻带边缘频率:s ϖ 通带起伏:p δ 通带峰值起伏:))(1(log 2010dB p p δα--=阻带起伏: s δ 最小阻带衰减:))((log 2010dB s s δα-=数字滤波器有IIR 和FIR 两种类型,他们的特点和设计方法不同。

一、窗函数法设FIR 滤波器在Matlab 中产生窗函数十分简单:(1) 矩形窗调用格式:w=boxcar(n) ,根据长度n 产生一个矩形窗w 。

(2) 三角窗调用格式:w=triang(n) ,根据长度n 产生一个三角窗w 。

(3)汉宁窗调用格式:w=hanning(n) ,根据长度n 产生一个汉宁窗w 。

(4)汉明窗调用格式:w=hamming(n) ,根据长度n 产生一个汉明窗w 。

(5)布莱克曼窗调用格式:w=Blackman(n) ,根据长度n 产生一个布莱克曼窗w 。

基于窗函数的FIR 滤波器设计利用Matlab 提供的函数firl 来实现。

调用格式:firl(n,wn,’ftype ’,Window),n 为阶数,wn 是截止频率(如果输入是形如[w1 w2]的矢量时,本函数将设计带通滤波器,其通带为w1<w<w2)、ftype 是滤波器的类型(底通——省略该参数、高通——ftype=high 、带阻——ftype=stop )、Window 是窗函数。

1、设计一个长度为8的线性相位FIR 滤波器。

Window=boxcar(8); b=fir1(7,0.4,Window); freqz(b,1); Window=blackman(80;b=fir1(7,0.4,Window); freqz(b,1);2、设计线性相位带通滤波器,其长度N=15,上下边带截止频率分别为w1=0.3π,w2=0.5π Window=blackman(16); B=firl(15,[0.3 0.5],Window); Freqz(b,1);3、设计指标为,dB A dB R s a p p 50,3.0,25.0,2.0====πϖπϖ的底通滤波器。

MATLAB滤波器设计课程设计报告

MATLAB滤波器设计课程设计报告

专业综合课程设计报告课设题目:数字频谱分析仪学院:信息与电气工程学院专业:电子信息工程班级:姓名:学号:指导教师:哈尔滨工业大学(威海)一、设计任务1.1Matlab实现FFT和滤波器两种方式频谱分析方法;用Matlab GUI设计频谱分析仪界面,界面上包括类似与实际频谱分析仪的参数设置和显示功能,例如:频谱分析范围、频谱物理分辨率、频谱视觉分辨力等参数的设置,信号频谱的显示等;界面上还应包括对这两种频谱分析方法的切换键;1.2要求设计的频谱分析仪具有对窄带信号分析的能力;1.3仿真产生一个信号,其中包含如下频率的正弦信号:1MHz,1.5MHz,2.1MHz,2.2MHz;各频率成分的正弦信号幅度分别为:1V,3V,2V,4V。

对其进行分析;要求的物理频谱分辨力为0.1MHz1.4个窄带信号,载频10GHz,信号带宽为10MHz的线性调频信号,使用频谱分析仪分析其频谱;二、方案设计MATLAB是Mathworks公司推出的数学软件,它将数值分析、矩阵计算、信号处理和图形显示结合在一起,为众多学科领域提供了一种简洁、高效的编程工具。

它提供的GUIDE工具为可视化编程工具,使得软件的界面设计像VB一样方便。

故本文采用MATLAB作为编程语言实现声音信号频谱分析仪,以下所讲的都是在MATLAB 2013b环境中。

为了实现预期的功能,设计界面如图所示:图1 图形用户界面界面分为三部分组成,左面为输出区,显示信号时域、频域波形,右边分为信号输入区和操作区。

信号输入分为三种输入方式,第一种为信号发生器输入,如图,信号发生器可以产生正弦、锯齿以及窄带信号波形及其叠加信号。

默认采样频率为2MHz,采样时间为6us。

单击start按键可以显示由信号发生器设置的波形时域或频谱图。

第二种为wav文件输入,可以对wav文件信号进行分析。

单击showWav按键,可以显示wav信号的时域以及频域处理后的波形。

第三种为声卡采集,通过计算机声卡采集声音信息进行频谱分析。

(完整版)基于Matlab的FIR滤波器的设计与仿真

(完整版)基于Matlab的FIR滤波器的设计与仿真

西南科技大学通信原理设计报告课程名称:通信原理课程设计设计名称:数字FIR滤波器设计与仿真分析姓名:XXXXXX学号: XXXXXXXX班级: XXXXXXXXXXX指导教师:XXXXXX起止日期:2014/6/26—2014/7/5西南科技大学信息工程学院制方向设计任务书学生班级:XXXXXXX 学生姓名:XXXXXX 学号:XXXXXXXXX 设计名称:数字FIR滤波器设计与仿真分析起止日期:2014/6/22-2014/7/5 指导教师:XXXXXXXX方向设计学生日志数字FIR滤波器设计与仿真分析一、摘要传统的数字滤波器设计计算繁琐,尤其是设计高阶滤波器时工作量大,利用Matlab可以快速有效地实现数字滤波器的设计与仿真。

本文介绍了有限长单位冲激响应FIR数字滤波器的传统设计思想和步骤,同时也介绍了利用MATLAB对FIR数字滤波器进行设计的方法、设计的操作步骤以及对设计的滤波器的仿真。

二、设计目的和意义1.通过此次专业方向设计,了解有限长单位冲激响应FIR数字滤波器的传统设计方法;2.了解Matlab信号处理箱并掌握FDATool专用滤波器设计分析工具;3.学习如何使用Matlab,学会用Matlab解决实际问题。

三、设计原理数字滤波器,是具有一定传输选择特性的数字信号处理装置,其输入和输出均为数字信号,实质上是一个由有限精度算法实现的线性时不变离散系统。

可以把它理解为是一个计算程序或算法,它把代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按照预定的形式变化。

数字滤波器有多种分类,从数字滤波器功能上分可分为低通、高通、带阻、带通滤波器,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应滤波器(IIR)和有限长冲激响应滤波器(FIR)。

1.有限长冲激响应滤波器FIR滤波器及其传统设计方法FIR滤波器的单位冲击响应是有限长的,h(n)在范围内有值,其系统函数为,它是的(N-1)阶多项式,H(z)在有限z平面()有N-1个零点;在z平面原点z=0处有N-1阶极点。

基于matlab的滤波器设计

基于matlab的滤波器设计

基于matlab的滤波器设计滤波器是信号处理中常用的一种技术,它可以对信号进行去噪、衰减干扰、波形整形等操作。

而在matlab中,我们可以通过使用内置函数或自定义函数来设计滤波器,以实现对信号的滤波处理。

在matlab中,滤波器设计可以分为两种常见的方法:时域方法和频域方法。

时域方法是基于信号的时间域特性进行滤波器设计,常见的时域方法有FIR滤波器和IIR滤波器。

频域方法则是通过对信号进行傅里叶变换,将信号从时域转换到频域,然后在频域进行滤波器设计,最后再将滤波后的信号通过逆傅里叶变换转换回时域。

频域方法主要有巴特沃斯滤波器、切比雪夫滤波器和椭圆滤波器等。

在实际应用中,我们常常需要根据具体的需求来选择合适的滤波器类型。

如果需要设计一个低通滤波器,可以使用巴特沃斯滤波器或椭圆滤波器;如果需要设计一个高通滤波器,可以选择切比雪夫滤波器或椭圆滤波器;而如果需要设计一个带通或带阻滤波器,则需要使用IIR滤波器。

以设计一个低通滤波器为例,我们可以使用matlab中的fir1函数来设计FIR滤波器。

首先,我们需要确定滤波器的阶数和截止频率。

阶数越高,滤波器的陡峭度越高,但计算复杂度也越高。

截止频率则决定了滤波器的频率特性。

在使用fir1函数时,我们可以指定滤波器的阶数和截止频率,并选择合适的窗函数来实现滤波器的设计。

常用的窗函数有矩形窗、汉宁窗、汉明窗等。

我们还可以使用matlab中的fdatool工具箱来进行滤波器设计。

fdatool提供了图形化界面,可以直观地设置滤波器的参数,并实时显示滤波器的频率响应和时域响应。

通过fdatool,我们不仅可以设计滤波器,还可以对滤波器进行分析和优化。

除了使用内置函数和工具箱进行滤波器设计外,我们还可以自定义滤波器函数来实现滤波器设计。

自定义函数可以根据具体的需求来设计滤波器的参数和算法,从而更加灵活地满足特定的信号处理需求。

总结起来,基于matlab的滤波器设计是一个相对简单而又灵活的过程。

基于MATLAB的滤波器设计

基于MATLAB的滤波器设计

基于MATLAB的滤波器设计年月日目录1 任务和要求 (1)2 MATLAB软件的简述....................................................................... 错误!未定义书签。

3 基于MATLAB的模拟滤波器设计 (2)3.1 利用MATLAB确定低通滤波器的阶数和幅频特性曲线 (2)3.2 利用MATLAB设计带通滤波器 (2)4 基于MATLAB的数字滤波器设计 (2)4.1 FIR数字滤波器设计原理.......................................................... 错误!未定义书签。

4.2 窗函数法设计及MATLAB实现.............................................. 错误!未定义书签。

4.3 程序设计法 (4)4.4 IIR数字滤波器的设计 (6)5 设计总结 ............................................................................................ 错误!未定义书签。

参考文献 (9)1任务和要求(1)任务:运用MATLAB软件针对性地进行实例分析,设计巴特沃斯模拟滤波器和切比雪夫模拟滤波器,对于数字滤波器通过FIR滤波器和IIR滤波器实例,使其绘制出相应的图形。

(2)基本要求了解并掌握MATLAB软件。

利用MATLAB确定低通滤波器的阶数和幅频特性曲线。

利用MATLAB设计带通滤波器。

在数字滤波器的设计中,通过FIR滤波器和IIR滤波器的实例,绘制出相应的图形。

2 MATLAB软件的简述MATLAB软件具有很强的开放性和适应性,是国际公认的优秀科技应用软件,是计算机辅助分析与设计、算法研究和应用开发的基础工具和首选平台,是目前科学研究领域最流行的应用软件,其特点概括为:(1)高效的数字计算方法及符号计算功能,使用户从繁杂的数学运算分析中解脱出来。

课程设计-matlab滤波器

课程设计-matlab滤波器

信号处理与系统设计报告一、设计题目及要求给定一个混有单频噪声的wav 波形文件,设计一个滤波器,要求能很好的滤除掉单频噪声,并且对原声音信号的影响最小。

这里仅仅要求FIR 滤波器用窗函数法,IIR 滤波器用butterworth 实现。

二、设计原理(1)、IIR 数字滤波器的实现方法1、 把数字滤波器的相应指标换算成模拟滤波器的指标;这里要考虑两种情况,如如果用脉冲响应不变法不需要进行预畸变,但是如果用双线性变换法就必须预畸变。

原因很简单,脉冲响应不变法是从S 域到Z 域的一一映射,是线性的;双线性变换法是先对S 域进行压缩,然后在映射至Z 域,因此是非线性的。

脉冲响应不变法不能用来设计高通,带阻等非限带滤波器; 2、 根据模拟滤波器的指标,设计相应的模拟滤波器; 3、 将模拟滤波器的系数转化为数字滤波器的系数;4、 如果不是低通,要先化成模拟低通滤波器的形式,最后转化成我们所需要的类型的滤波器。

5、 IIR 可以用butterworth 和chebyshev 两种方法实现,butterworth 滤波器在整个范围内是平滑的,chebyshev1和chebyshev2一个通带有波纹,一个阻带有波纹。

(2)、FIR 滤波器的实现方法1、给定理想的频率响应H )(jw d e 及指标A ;w s ∆和2、求出理想的单位抽样相应h )(n d3、根据阻带衰减及过渡带宽决定用什么类型的窗函数及滤波的阶数N ,阶数N 要经过几次试探才能确定。

4、求所设计的FIR 滤波器的单位抽样相应h(n)=h d (n)*w(n)5、计算频率响应H(ejw),确定是否满足设计指标,若不满足,需要重新设计。

(3)DFT的分析方法1、主要用到离散信号时域与频域相互转化的傅立叶变换,主要要解决的就是频谱泄露,栅栏效应,以及怎样提高分辨率等问题。

要重点区别掌握的知识:信号的实际采样点数N,信号的补零之后的总的计算用的点数N1,单纯的补零,即实际采样点数N不变,只增加补零的个数,可以减小栅栏效应,并不能提高信号的分辨率;增加信号的实际采样点N,可以提高信号频域的分辨率。

基于matlab的数字滤波器的设计及仿真

基于matlab的数字滤波器的设计及仿真
第22第页2/2共页3/3共页33页
程序编写
clearclose allwls=0.2*pi;wlp=0.35*pi;whp=0.65*pi;B=wlp-wls;N=ceil(12/0.15);wc=[wlp/pi-6/N,whp/pi+6/N];hn=fir1(N-1,wc,blackman(N));n=0:79;subplot(2,1,1);stem(n,hn,".")[h,w]=freqz(hn,1,256);subplot(2,1,2);plot(w/pi,20*log10(abs(h)));grid;
滤波器的仿真
第16第页1/2共页3/3共页33页
三个信号叠加:
第17第页1/2共页3/3共页33页
滤波后的结果:
可见FDAtool设计的滤波器滤波的效果很好!
二、MATLAB环境下FIR数字滤波器的设计
窗函数法等波纹逼近法频率采样法
第18第页1/2共页3/3共页33页
窗函数法
用窗函数法设计FIR滤波器时,先根据wc和N求出相应的理想滤波器单位脉冲响应hd(n);选择合适的窗函数w(n)来截取hd(n)的适当长度(即阶数),以保证实现要求的阻带衰减;最后得到FIR滤波器单位脉冲响应:h(n)= hd(n)*w(n).
第23第页2/2共页3/3共页33页
第24第页2/2共页3/3共页33页
四、两个有趣的实验
1、利用MATLAB进行声音滤波:利用MATLAB读取wav格式的声音文件,对信号进行离散傅里叶变换,得到其频谱图,给信号加杂音,然后设计一个数字滤波器将杂音滤除,得到原音,最后比较滤波器的滤波效果。
第25第页2/2共页3/3共页33页
第31第页2/2共页3/3共页33页
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计课程名称数字信号处理题目名称应用Matlab对语音信号进行频谱分析及滤波学生学院信息工程学院专业班级学号学生姓名指导教师2011 年 1 月 4 日一、设计题目应用Matlab对语音信号进行频谱分析及滤波二、设计目的1、进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;2、增强应用Matlab语言编写数字信号处理的应用程序及分析、解决实际问题的能力;3、掌握用MATLAB对采样信号进行频谱分析基本原理;4、学会用MATLAB设计FIR和IIR滤波器的基本方法;5、学会用MATLAB的GUI功能设计用户界面。

三、设计内容1、语音信号的采集;2、语音信号的频谱分析;3、设计数字滤波器和画出其频率响应;4、用滤波器对信号进行滤波;5、比较滤波前后语音信号的波形及频谱;6、设计系统界面;7、回放语音信号。

四、设计结果分析1、主界面截图其中上面两个大图是输入信号的频谱分析;下面的则是输出信号的频谱分析;右边两个小图是滤波器函数的图像。

右边界面可以选择滤波器的参数。

本程序具有录音、载入音频、设计各种滤波器、滤波、回放滤波后的声音等功能。

2、用窗函数法和双线性变换法设计下面要求的3种滤波器。

(1)低通滤波器性能指标fb=1 000 Hz,fc=1 200 Hz,As=100 dB,Ap=1 dB。

(2)高通滤波器性能指标fc=4 800 Hz,fb=5 000 Hz As=100 dB,Ap=1 dB。

(3)带通滤波器性能指标fb1=1 200 Hz,fb2=3 000 Hz,fc1=1 000 Hz,fc2=3 200 Hz,As=100 dB,Ap=1 dB。

本次设计利用函数fir1设计FIR滤波器,利用函数ellip设计IIR滤波器。

①IIR低通②FIR低通分析:对于不同滤波器而言,每个频率的信号的减弱程度不同。

当低通滤波器使用在音频应用时,它有时被称为高频剪切滤波器, 或高音消除滤波器。

从上面的IIR与FIR低通滤波器频谱分析图中可以看出,音频的高频部分被滤掉了,输出的声音低沉,且声音信号有失真。

③IIR高通④FIR高通分析:高通滤波器的作用是滤去音频信号中的低音成分,增强中音和高音成分以驱动扬声器的中音和高音单元。

有时被称为低频剪切滤波器, 或低音消除滤波器。

从上面的频谱分析图中可以看出,声音信号的低频部分被滤除了,输出的声音高昂刺耳。

同时还可以看出声音信号有失真。

⑤IIR带通⑥FIR带通分析:带通滤波器的作用是将频带外的频段滤除,即可滤除低频和高频成分,保留声音信号的中间频段,除去了高音与低音,增强了中音成分,声音清晰。

五、设计心得体会(1)从电脑上录取一段音频后,将信号载入设计的滤波器中进行滤波。

通过观察图像、回放滤波后的音频来作分析。

原始音频信号经过滤波器后输出的信号受到滤波器的滤波作用,把高频或低频分量滤掉,出来的信号一个是带限信号,频带在一定范围内。

滤波后的波形还伴随着一定的失真,使得声音信号有些音质上的变化。

为了减少这种失真,我们可以选择不同的滤波器,设置不同的参数来测试各种性能,最终是信号的滤波作用达到最佳。

(2)在设计用户界面时,由于是第一次接触GUI,我下了很大的功夫查阅资料和查看帮助文件。

在弄清楚双线性变换法设计IIR滤波器和窗函数法设计FIR滤波器的基本概念之后,我用了2天时间在做滤波器的,忽略了用户界面的设计。

等真正在做用户界面时才发现原来GUI设计界面、布局、写入逻辑语句等才是设计的重点。

为了构建一个实用好看的界面,我又通过网络和帮助文件深入的了解了GUI。

搞定一切之后,敲入所构思的程序,一个具有录音、滤波、频谱分析的用户界面诞生了。

通过此次设计,我认识到MATLAB的帮助文件真是学习MATLAB的好工具,它在整个设计过程中帮了我很多,而且让我的英语水平也有了提高。

六、参考文献[1]程佩青清华大学出版社,2009.附录:function varargout = NEWS(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @NEWS_OpeningFcn, ...'gui_OutputFcn', @NEWS_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});endfunction NEWS_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);function varargout = NEWS_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output;function pm1_Callback(hObject, eventdata, handles)val = get(hObject,'Value');str = get(hObject, 'String');switch str{val};case'IIR Filter'% User selects Filter Typehandles.yhx1 = 1;set(handles.p6,'enable','off');set(handles.pm2,'enable','on');case'FIR Filter'% User selects Filter Typehandles.yhx1 = 2;set(handles.p6,'enable','on');set(handles.pm2,'enable','off');case'Filter Type'% Error Warningerrordlg('You Must Choose The Filter Type ',' Error');endguidata(hObject,handles)function pm1_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction pm2_Callback(hObject, eventdata, handles)val1 = get(hObject,'Value');str1 = get(hObject, 'String');switch str1{val1};case'Buttord'% User selects Filter Functionhandles.yhx2 = 1;case'Cheb1ord'% User selects Filter Functionhandles.yhx2 = 2;case'Cheb2ord'% User selects Filter Functionhandles.yhx2 = 3;case'Ellipord'% User selects Filter Functionhandles.yhx2 = 4;case'Filter Function'% Error Warningerrordlg('You Must Choose The Filter Function ',' Error'); endguidata(hObject,handles)function pm2_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction p6_Callback(hObject, eventdata, handles)val2 = get(hObject,'Value');str2 = get(hObject,'String');switch str2{val2};case'Rectwin'handles.yhx3 = 0; % User selects Window Function case'Bartlett'handles.yhx3 = 1; % User selects Window Function case'Hann'handles.yhx3 = 2; % User selects Window Function case'Hamming'handles.yhx3 = 3; % User selects Window Function case'Blackman'handles.yhx3 = 4; % User selects Window Function case'Kaiserord'handles.yhx3 = 5; % User selects Window Function case'Window Function'errordlg('You Must Choose The Window Function','ERROR'); endguidata(hObject,handles);function p6_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction pm4_Callback(hObject, eventdata, handles)val3 = get(hObject,'Value');str3 = get(hObject, 'String');switch str3{val3};case'Lowpass'% User selects Passband Typehandles.yhx4 = 1;set(handles.edit4,'enable','off');set(handles.edit4,'backgroundcolor',[0.90,0.90,0.90]);set(handles.edit5,'enable','off');set(handles.edit5,'backgroundcolor',[0.90,0.90,0.90]);case'Highpass'% User selects Passband Typehandles.yhx4 = 2;set(handles.edit4,'enable','off');set(handles.edit5,'enable','off');set(handles.edit4,'backgroundcolor',[0.90,0.90,0.90]);set(handles.edit5,'backgroundcolor',[0.90,0.90,0.90]);case'Bandpass'% User selects Passband Typehandles.yhx4 = 3;set(handles.edit4,'enable','on');set(handles.edit5,'enable','on');set(handles.edit4,'backgroundcolor','white');set(handles.edit5,'backgroundcolor','white');case'Passband Type'% Error Warningerrordlg('You Must Choose The Passband Type',' Error');endguidata(hObject,handles)function pm4_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction pushbutton3_Callback(hObject, eventdata, handles)handles.Fs=str2double(get(handles.edit1,'String')); %Sampling frequency guidata(hObject,handles);Fc1=str2double(get(handles.edit2,'string')); %Passband cut-off frequency Fst1=str2double(get(handles.edit3,'string')); %Stopband cut-off frequencyFc2=str2double(get(handles.edit4,'string'));Fst2=str2double(get(handles.edit5,'string'));Rp=str2double(get(handles.edit6,'string')); %The maximum passband rippleRs=str2double(get(handles.edit7,'string')); %The minimum stopband attenuationWp1=Fc1/(handles.Fs/2);Ws1=Fst1/(handles.Fs/2);Wp2=Fc2/(handles.Fs/2);Ws2=Fst2/(handles.Fs/2);switch handles.yhx1 %User selects the Filter Typecase(1)switch handles.yhx2 %User selects the Filter Functioncase(1)switch handles.yhx4 % User selects Passband Typecase(1)ftype='low';case(2)ftype='high';case(3)Wp1=[Wp1 Wp2];Ws1=[Ws1 Ws2];ftype='bandpass';end[n,Wn]=buttord(Wp1,Ws1,Rp,Rs,'s');[handles.b,handles.a] =butter(n,Wn,ftype);case(2)switch handles.yhx4 % User selects Passband Typecase(1)ftype='low';case(2)ftype='high';case(3)Wp1=[Wp1 Wp2];Ws1=[Ws1 Ws2];ftype='bandpass';end[n,Wn]=cheb1ord(Wp1,Ws1,Rp,Rs,'s');[handles.b,handles.a] =cheby1(n,Rp,Wn,ftype);case(3)switch handles.yhx4 % User selects Passband Typecase(1)ftype='low';case(2)ftype='high';case(3)Wp1=[Wp1 Wp2];Ws1=[Ws1 Ws2];ftype='bandpass';end[n,Wn]=cheb2ord(Wp1,Ws1,Rp,Rs,'s');[handles.b,handles.a] =cheby2(n,Rp,Wn,ftype);case(4)switch handles.yhx4 % User selects Passband Typecase(1)ftype='low';case(2)ftype='high';case(3)Wp1=[Wp1 Wp2];Ws1=[Ws1 Ws2];ftype='bandpass';end[n,Wn]=ellipord(Wp1,Ws1,Rp,Rs,'s');[handles.b,handles.a] =ellip(n,Rp,Rs,Wn,ftype);end[h,f]=freqz(handles.b,handles.a,128,handles.Fs);plot(handles.axes3,f,20*log10(abs(h))); %Amplitude-frequency responseplot(handles.axes7,f,angle(h)); %Phase-frequencyresponseecase(2)Wn1=(Wp1+Ws1)/2;Wn2=(Wp2+Ws2)/2;switch handles.yhx3 % User selects Window Functioncase(0)switch handles.yhx4 % User selects Passband Type case(1)dw=Ws1-Wp1;wtype='low';case(2)dw=Wp1-Ws1;wtype='high';case(3)dw=min((Wp1-Ws1),(Ws2-Wp2));Wn1=[Wn1 Wn2];wtype='bandpass';endN = 2*ceil(1.8/dw)+1;window=rectwin(N);case(1)switch handles.yhx4 % User selects Passband Typecase(1)dw=Ws1-Wp1;wtype='low';case(2)dw=Wp1-Ws1;wtype='high';case(3)dw=min((Wp1-Ws1),(Ws2-Wp2));Wn1=[Wn1 Wn2];wtype='bandpass';endN = 2*ceil(4.2/dw)+1;window=bartlett(N);case(2)switch handles.yhx4 % User selects Passband Typecase(1)dw=Ws1-Wp1;case(2)dw=Wp1-Ws1;wtype='high';case(3)dw=min((Wp1-Ws1),(Ws2-Wp2));Wn1=[Wn1 Wn2];wtype='bandpass';endN = 2*ceil(6.2/dw)+1;window=hann(N);case(3)switch handles.yhx4 % User selects Passband Typecase(1)dw=Ws1-Wp1;wtype='low';case(2)dw=Wp1-Ws1;wtype='high';case(3)dw=min((Wp1-Ws1),(Ws2-Wp2));Wn1=[Wn1 Wn2];wtype='bandpass';endN = ceil(6.6/dw)+1;window=hamming(N);case(4)switch handles.yhx4 % User selects Passband Typecase(1)dw=Ws1-Wp1;wtype='low';case(2)dw=Wp1-Ws1;wtype='high';case(3)dw=min((Wp1-Ws1),(Ws2-Wp2));Wn1=[Wn1 Wn2];wtype='bandpass';endN = 2*ceil(11/dw)+1;window=blackman(N);case(5)if(Rs>=50)beta=0.1102*(Rs-8.7);beta=0;else beta=0.5842*(Rs-21)^0.4+0.07886*(Rs-21); %The Kaiser Window figure ¦Âendswitch handles.yhx4 % User selects Passband Typecase(1)dw=Ws1-Wp1;wtype='low';case(2)dw=Wp1-Ws1;wtype='high';case(3)dw=min((Wp1-Ws1),(Ws2-Wp2));Wn1=[Wn1 Wn2];wtype='bandpass';endN = ceil((Rs-7.95)/(2.286*dw));window=kaiser(N,beta);endhandles.c=fir1(N-1,Wn1,wtype,window);[h,f]=freqz(handles.c,1,128,handles.Fs);plot(handles.axes3,f,20*log10(abs(h))); %Amplitude-frequency responseplot(handles.axes7,f,angle(h)); %Phase-frequencyresponseeendxlabel(handles.axes3,'Frequency (Hz)')title(handles.axes3,'Amplitude-frequency response')axis(handles.axes3,'tight');xlabel(handles.axes7,'Frequency (Hz)')title(handles.axes7,'Phase-frequencyresponsee')axis(handles.axes7,'tight');guidata(hObject,handles);function edit1_Callback(hObject, eventdata, handles)function edit1_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit2_Callback(hObject, eventdata, handles)function edit2_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit3_Callback(hObject, eventdata, handles)function edit3_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit4_Callback(hObject, eventdata, handles)function edit4_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit5_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit6_Callback(hObject, eventdata, handles)function edit6_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit7_Callback(hObject, eventdata, handles)function edit7_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction pushbutton1_Callback(hObject, eventdata, handles)button2 = questdlg('Do You Want To Record A New Sound?',...'Record Or Load','Yes','No,Choose From Computer','Yes'); switch button2case'Yes',handles.rate =8000;handles.data= wavrecord(5*handles.rate,handles.rate,'double');case'No,Choose From Computer',[FileName,PathName] = uigetfile('*.wav','Select the wav file'); %To slect the wav filehandles.string = [PathName FileName];[handles.data, handles.rate] = wavread([PathName FileName]);set(handles.edit8,'String',PathName); %Display the path name at edit8endset(handles.edit1,'String',handles.rate);guidata(hObject,handles);function pushbutton2_Callback(hObject, eventdata, handles)handles.L=length(handles.data);plot(handles.axes1,handles.data);axis(handles.axes1,'tight');title(handles.axes1,'Time domain representation of input signal')xlabel(handles.axes1,'time (milliseconds)')temp=fft(handles.data); %Fast Fourier transformationtemp=abs(temp);plot(handles.axes2,temp)axis(handles.axes2,'tight');xlabel(handles.axes2,'Frequency (Hz)')xlim(handles.axes2,[0 handles.L/2])title(handles.axes2,'Frequency representation of input signal')guidata(hObject,handles);function pushbutton4_Callback(hObject, eventdata, handles)switch handles.yhx1case(1)handles.y=filter(handles.b,handles.a,handles.data);%Through the IIR FilterY=fft(handles.y);case(2)handles.y=fftfilt(handles.c,handles.data);%Through the FIR FilterY=fft(handles.y);endplot(handles.axes4,handles.y);axis(handles.axes4,'tight');plot(handles.axes5,abs(Y));axis(handles.axes5,'tight');xlim(handles.axes5,[0 handles.L/2]);title(handles.axes4,'Time domain representation of ouput signal')xlabel(handles.axes4,'time (milliseconds)')xlabel(handles.axes5,'Frequency (Hz)')title(handles.axes5,'Frequency representation of ouput signal') guidata(hObject,handles);function pushbutton5_Callback(hObject, eventdata, handles) sound(handles.y,handles.rate); %Replay soundguidata(hObject,handles);function pushbutton6_Callback(hObject, eventdata, handles) sound(handles.data, handles.rate); %Play soundfunction edit8_Callback(hObject, eventdata, handles)function edit8_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction pushbutton7_Callback(hObject, eventdata, handles) button = questdlg('Ready to quit?', ...'Exit Dialog','Yes','No','No');switch buttoncase'Yes',disp('Exiting Object');%Save variables to matlab.matsavedelete(NEWS)case'No',quit cancel;end。

相关文档
最新文档