FIR参考程序

合集下载

fir

fir

1、设计任务1、用MATLAB软件实现FIR滤波器;2、设计基于DSP的FIR滤波器硬件框图;3、了解用DSP实现FIR滤波器的关键问题;4、完成必要的软件流程图。

2.前言在信号与信息处理过程中,在对信号作分析处理时,滤波是一种十分重要的算法,滤波是将信号中特定波段频率滤除的操作。

数字信号处理通常采用FFT/IFFT 实现,那么其中需要滤除的频率,可以采用“滤波函数”与被处理信号相乘而达到目的。

滤波分为模拟滤波和数字滤波,数字滤波它是通过一种算法排除可能的随机干扰,提高检测精度的一种手段, 随着数字技术的飞速发展,数字滤波理论也得到了长足的进步,现在广泛用于对信号的过滤、检测与参数的估计、语音和图像处理、模式识别、频谱分析等应用中等信号处理中。

滤波需要用到的是滤波器,滤波器的种类很多,实现方法也多种多样。

在数字信号处理中,数字滤波器有及其重要的地位。

在许多信号处理应用中用数字滤波器替代模拟滤波器具有许多优势。

数字滤波器容易实现不同的幅度和相位频率特性指标,克服了与模拟滤波器性能相关的电压漂移、温度漂移和噪声等问题。

数字滤波器根据其单位冲激响应函数的时域特性可分为两类: 无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。

IIR数字滤波器的设计方法是利用模拟滤波器成熟的理论及设计图表进行设计的,因而保留了一些典型模拟滤波器优良的幅度特性,但设计中只考虑了幅度特性,没考虑相位特性,所设计的滤波器一般是某种确定的非线性相位特性。

为了得到线性相位特性,对IIR滤波器必须另外加相位校正网络,使滤波器设计变得复杂,成本也高,又难以得到严格的线性相位特性。

而FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到有严格的线性相位特性,又因为FIR滤波器的h(n)是有限长的,所以它一定是稳定的,同时为了使FIR数字滤波器的设计更优化,因而研究FIR数字滤波器的优化设计具有重要的意义。

在数字滤波器的设计过程中,软件模拟的方法不仅能及时地提供系统运行的信息,还可以随时改变系统结构从而验证全新的系统,所以软件仿真变得非常重 要。

数字信号处理课程设计-语音信号的处理与滤波-精品

数字信号处理课程设计-语音信号的处理与滤波-精品

工学院数字信号处理课程设计说明书设计题目语音信号的处理与滤波系别计算机工程系专业班级通信061学生姓名学号指导教师日期日摘要:本文主要利用MATLAB工具采用双线性法和窗函数法设计IIR滤波器和FIR数字滤波器,并通过所设计的滤波器进行语音信号滤波分析,初步学会信号处理的过程和分析问题的能力。

关键词:MA TLAB 滤波器设计一.引言随着信息时代和数字世界的到来,数字信号处理已成为今一门极其重要的学科和技术领域。

数字信号处理在通信语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。

在数字信号处理应用中,数字滤波器十分重要并已获得广泛应用。

二.MATLAB工具简介1.MA TLAB是矩阵实验室(Matrix Laboratory)之意,现已发展成为适合多学科,多种工作平台的功能强大的大型软件,已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;2.MA TLAB的语言特点(1)。

语言简洁紧凑,使用方便灵活,库函数极其丰富。

MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。

由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。

(2)运算符丰富。

由于MA TLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MA TLAB的运算符将使程序变得极为简短。

(3)MA TLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。

(4)程序限制不严格,程序设计自由度大。

例如,在MA TLAB里,用户无需对矩阵预定义就可使用。

(5)程序的可移植性很好,基本上不做修改就可在各种型号的计算机和操作系统上运行。

(6)MA TLAB的图形功能强大。

在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。

MATLAB窗函数法实现FIR的高通,带通和低通滤波器的程序

MATLAB窗函数法实现FIR的高通,带通和低通滤波器的程序

MATLAB窗函数法实现FIR的高通,带通和低通滤波器的程序MATLAB 学院:地球物理与石油资源学院班级:姓名:学号:班内编号:指导教师:完成日期:测井11001大牛啊啊啊陈义群2013年6月3日课程设计报告一、题目FIR滤波器的窗函数设计法及性能比较 1. FIR滤波器简介数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。

根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应滤波器和有限冲激响应滤波器。

与IIR滤波器相比,FIR滤波器的主要特点为: a. 线性相位;b.非递归运算。

2. FIR 滤波器的设计FIR滤波器的设计方法主要有三种:a.窗函数设计法;b.频率抽样发;c.最小平法抽样法;这里我主要讨论在MATLAB环境下通过调用信号分析与处理工具箱的几类窗函数来设计滤波器并分析与比较其性能。

窗函数法设计FIR滤波器的一般步骤如下: a. 根据实际问题确定要设计的滤波器类型; b. 根据给定的技术指标,确定期望滤波器的理想频率特性;c. 求期望滤波器的单位脉冲响应;d. 求数字滤波器的单位脉冲响应; e. 应用。

常用的窗函数有(1)Hanningwindoww(n)?[?((2)Hammingw indoww(n)?[?((3)Balckmanwindoww(n)?[ ?((4)KaiserwindowI0{?1?[2n/(N?1)]2}w(n )?RN(n)I0(?)式中I0(x)是零阶Bessel函数,可定义为()2?n4?n)?()]RN(n)N?1N?1()2?n)]RN(n)N ?1() ?nN?1)]RN(n)() (x/2)m2I0(x)?1??m!m?1? 当x?0时与矩形窗一致;当x?时与海明窗结果相同;当x?时与布莱克曼窗结果相同。

3.窗函数的选择标准 1. 较低的旁瓣幅度,尤其是第一旁瓣; 2. 旁瓣幅度要下降得快,以利于增加阻带衰减;3. 主瓣宽度要窄,这样滤波器过渡带较窄。

CCS集成开发环境以及FIR程序流程图

CCS集成开发环境以及FIR程序流程图

4.1 CCS集成开发环境的介绍CCS(Code Composer Studio)是由TI公司针对开发TMS320系列的DSP芯片而推出的一种集成开发环境,运行于Windows操作系统中,并且使用清晰明了的图形交互界面有助于用户在软件环境下完成对程序的编辑、编译、链接、运行、软件的仿真、调试硬件和数据分析等工作。

通过提供环境配置、程序的调试、源文件的编辑、以及程序运行时的跟踪以及数据处理的分析等工具,能够满足用户完成开发DSP系统所有环节的各种需求,缩短了系统开发所需要的时间,很大程度上给设计者带来了方便。

现阶段,CCS是用于DSP系统开发的典型软件,受到了广泛的应用。

CCS的工作模式有两种:软件仿真和硬件在线编程[2]。

前者的仿真可以不用真实的DSP芯片,仅在个人微型计算机上就可以仿真DSP系统的实际工作流程,作用主要是验证前期处理算法的准确性以及调试编辑好的程序;后者的在线编程则可以在DSP芯片上进行实际的操作运行,结合硬件开发板一块实现对程序的编辑和调试以便实现特定的功能。

图4-1和图4-2分别为CCS集成开发环境运行时的配置窗口和工作窗口:图4-1 CCS的配置窗口图4-2 CCS的工作界面4.1.1 CCS的组成CCS的系统开发一般由以下五个部分组成:●C54x系列芯片的集成代码生成工具;●DSP/BIOS插件和应用程序的接口API;●RTDX插件(用于对数据进行实时的交换)和与之对应的程序接口API;●CCS集成开发环境;●非TI的公司作为第三方所提供的多种应用模块插件。

这五个组成部分用来对C语言、汇编语言或者是二者的混合语言编写的源程序进行编译、链接,最终生成可执行的程序代码,然后将其加载到指定的DSP 芯片中来完成预先设定的数据处理的任务。

4.1.2 CCS的主要功能CCS集成开发环境的功能很强大,集成了对程序的编辑、编译、链接、运行、仿真和实时跟踪等用于系统开发的所有功能,包括对工程的管理以及对软件和硬件的调试等工具,还可以对C/C++与汇编语言进行混合编程,主要的功能有:1、提供GEL工具:通过GEL的扩展语言能够编写适合自己的菜单和控制面板,而且能够对变量和配置参数等进行方便地修改;2、支持RTDX技术:在目标系统运行的过程中不经过中断就可以实现与其他应用程序进行数据交换的目的;3、编辑代码的界面是集成可视化的:用户可以在CCS的工作界面上直接编写源程序和命令文件;4、图形显示工具能够将数据处理后的结果在屏幕上清晰的显示出来:包括信号的时域和频域的波形、星座图和眼图等多种图形,而且能够对这些图形进行自动的刷新;5、具有集成代码的生成工具(包括C语言的编译器、汇编语言的汇编器以及链接器等):在一个软件中集成了对程序的编辑、编译、链接和运行调试等所有功能;6、提供DSP/BIOS工具:可以对程序代码进行实时分析;7、性能独特的编辑器能够动态的加亮显示程序的动态语法,这样便使得代码的阅读更为方便,语法错误的识别更加的容易快捷;8、可以设置断点的工具:在程序的调试过程当中可以对软硬件设置断点,还可以对条件断点进行设置;9、分析工具:对仿真器、模拟器进行分析,用于对硬件的功能进行监视和模拟、对程序执行的时钟信息进行评价;10、用户可以对程序进行项目管理。

FIR C程序

FIR C程序
{
int i, j;
float p;
copy current input block to work buffer
workbuf[N-1] = x[0], workbuf[N] = x[1],
关键是你要先按要求设计一个FIR滤波器,比如低通、高通、带通或者带阻,然后通带频率、阻带频率多少?通带、阻带波纹多少,可以用matlab生成,或者从网上找其他的工具也可以。
建议你看看奥本海姆的离散时间信号处理(discrete-time signal processing).
1. 确定滤波器的要求: 低通、高通、带通还是带阻等,以及具体通带、阻带频率,通带、阻带增益。
比如FIR的系数是h(0),h(1),h(2),...h(N), 对输入信号x(n)通过滤波器的输出为y(n),则
y(n) = h(0)x(n) + h(1)x(n-1) + h(2)x(n-2) +...+h(N)x(n-N),默认因果系统初始条件x(-1),x(-2),...,x(-N)为0. 就是简单的乘累加,如果FIR滤波器的长度很长,可以用FFT来进行快速运算。
k=0
定点、精度、能力消耗可能需要考虑。
#define N 10 number of FIR coefficients.
#define BLKSIZE 20 block size of samples filtered each time.
workbuf[N+1] = x[2], ..., workbuf[M-1] = x[BLKSIZE-1];
for (i=0; iBLKSIZE; i++)
{
workbuf[i+N-1] = x[i];

《DSP原理及应用》邹彦主编课后答案(个人终极修订版)复习过程_4827

《DSP原理及应用》邹彦主编课后答案(个人终极修订版)复习过程_4827

声明:1、本人知识能力有限,只能按自己认识来判断答案的正误来编写本资料;2、本资料为《 DSP 原理及应用(修订版)》邹彦主编的课后答案,仅作参考作用,不一定代表考试方向。

精品文档3、请尊重劳动成果,祝大家考试顺利!第一章1、数字信号处理实现方法一般有几种?答:课本P2( 2.数字信号处理实现)2、简要地叙述DSP 芯片的发展概况。

答:课本P2(1.2.1 DSP芯片的发展概况)3、可编程DSP 芯片有哪些特点?答:课本P3(1.2.2 DSP 芯片的特点)4、什么是哈佛结构和冯诺依曼结构?他们有什么区别?答:课本P3-P4(1.采用哈佛结构)5、什么是流水线技术?答:课本P5(3.采用流水线技术)6、什么是定点DSP 芯片和浮点DSP 芯片?它们各有什么优缺点?答:定点 DSP 芯片按照定点的数据格式进行工作,其数据长度通常为16 位、 24 位、32 位。

定点 DSP 的特点:体积小、成本低、功耗小、对存储器的要求不高;但数值表示范围较窄,必须使用定点定标的方法,并要防止结果的溢出。

浮点 DSP 芯片按照浮点的数据格式进行工作,其数据长度通常为32 位、 40 位。

由于浮点数的数据表示动态范围宽,运算中不必顾及小数点的位置,因此开发较容易。

但它的硬件结构相对复杂、功耗较大,且比定点DSP 芯片的价格高。

通常,浮点DSP 芯片使用在对数据动态范围和精度要求较高的系统中。

7、 DSP 技术发展趋势主要体现在哪些方面?答:课本P9(3.DSP 发展技术趋势)8、简述 DSP 系统的构成和工作过程。

答:课本P10( 1.3.1DSP 系统的构成)9、简述 DSP 系统的设计步骤。

答:课本P12(1.3.3DSP 系统的设计过程)10、 DSP 系统有哪些特点?答:课本P11( 1.3.2DSP 系统的特点)11、在进行 DSP 系统设计时,应如何选择合理的DSP 芯片?答:课本P13( 1.3.4DSP 芯片的选择)12、 TMS320VC5416-160的指令周期是多少毫秒?它的运算速度是多少MIPS ?解: f=160MHz ,所以 T=1/160M=6.25ns=0.00000625ms;运算速度 =160MIPS第二章1、 TMS320C54x芯片的基本结构都包括哪些部分?答:课本P17(各个部分功能如下)2、 TMS320C54x芯片的 CPU 主要由几部分组成?答:课本P18( 1.CPU)3、处理器工作方式状态寄存器PMST 中的 MP/MC 、OVLY和 DROM3个状态位对’ C54x 的存储空间结构有何影响?答:课本P34(PMST 寄存器各状态位的功能表)4、TMS320C54x芯片的内外设主要包括哪些电路?答:课本 P40(’C54x 的片内外设电路)5、TMS320C54x芯片的流水线操作共有多少个操作阶段?每个操作阶段执行什么任务?完成一条指令都需要哪些操作周期?答:课本 P45( 1.流水线操作的概念)6、 TMS320C54x芯片的流水线冲突是怎样产生的?有哪些方法可以避免流水线冲突?答:由于 CPU 的资源有限,当多于一个流水线上的指令同时访问同一资源时,可能产生时序冲突。

IIR滤波FIR滤波及维纳滤波简介、程序及仿真结果

IIR滤波FIR滤波及维纳滤波简介、程序及仿真结果

IIR 滤波器、FIR 滤波器与维纳滤波器所谓数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。

数字滤波器从实现的网络结构或者从单位脉冲响应分类,可以分为无限脉冲响应(IIR )滤波器和有限脉冲响应(FIR )滤波器。

它们的系统函数分别为:1.1n N n z n h z H --=∑=10)()( 1.21.1中的H(z)成为N 阶IIR 滤波器,1.2中的H(z)称为(N-1)阶FIR 滤波器函数,这两种类型的设计方法有很大的区别。

IIR 数字滤波器的设计既可以从模拟滤波器的设计入手来进行,也可以直接利用指标参数,通过调用滤波器设计子程序或函数来进行。

可以利用脉冲响应不变法来设计IIR 数字低通滤波器,按照技术要求设计一个模拟低通滤波器,得到模拟低通滤波器的传输函数,再按一定的转换关系将传输函数转换成数字低通滤波器的系统函数H(z)。

设模拟滤波器的传输函数是s H a (),相应的单位冲激响应是)(t h a ,对)(t h a 进行等间隔采样,采样间隔为T ,得到)(nT h a ,将h(n)= )(nT h a 作为数字滤波器的单位取样响应,那么数字滤波器的系统函数便是h(n)的z 变换,因此脉冲响应不变法是一种时域上的转换方法,它使h(n)在采样点上等于)(t h a∑=-=Ni iia s s A s H 1)( 1.3 ∑=--=Ni T s iz eA z H i 111)( 1.4 将s H a ()在s 平面上沿虚轴按照周期2pi/T 延括后,再按标准映射关系sT e z =,映射到z 平面上,就得到了H(z)。

脉冲响应不变法的优点是频率坐标变化时线性的,如果不考虑频率混叠现象,用这种方法设计的数字滤波器会很好的重现模拟滤波器的频率特性。

以下为用matlab 仿真的一个IIR 低通滤波器: % IIR Lowpass Use Butterworth % copyright by Etual clear;fs=20;fpass=4;fstop=5;∑∑=-=--=Nk kk Mk k k z a z b z H 101)(Ap=0.5;As=10;wp=2*pi*fpass/fs;ws=2*pi*fstop/fs;omegap=tan(wp/2);omegas=tan(ws/2);ep=sqrt(10^(Ap/10)-1);es=sqrt(10^(As/10)-1);N=ceil(log(es/ep)/log(omegas/omegap));omega0=omegap/ep^(1/N);K=floor(N/2);for i=1:Ktheta(i)=pi*(N-1+2*i)/(2*N);endfor i=1:KG(i)=omega0^2/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka1(i)=2*(omega0^2-1)/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka2(i)=(1+2*omega0*cos(theta(i))+omega0^2)/(1-2*omega0*cos(theta(i))+omeg a0^2);endif K<(N/2)G0=omega0/(omega0+1);a0=(omega0-1)/(omega0+1);endw=0:pi/300:pi;Hw2=1./(1+(tan(w/2)/omega0).^(2*N));plot(w/pi,Hw2);grid;图一IIR滤波器频谱图IIR数字滤波器能保留一些典型模拟滤波器优良的幅度特性,但设计中只考虑了幅度特性,没考虑相位特性,所设计的滤波器相位特性一般是非线性的。

fir数字滤波器设计及软件实现

fir数字滤波器设计及软件实现

实验二 FIR 数字滤波器设计与软件实现1.实验目的(1)掌握用窗函数法设计FIR 数字滤波器的原理和方法。

(2)掌握用等波纹最佳逼近法设计FIR 数字滤波器的原理和方法。

(3)掌握FIR 滤波器的快速卷积实现原理。

(4)学会调用MATLAB 函数设计与实现FIR 滤波器。

2. 两种设计FIR 滤波器的方法比较窗函数法简单方便,易于实现。

但存在以下缺点:滤波器边界频率不易精确控制。

窗函数法总使通带和阻带波纹幅度相等,不能分别控制通带和阻带波纹幅度。

所设计的滤波器在阻带边界频率附近的衰减最小,距阻带边界频率越远,衰减越大。

,所以如果在阻带边界频率附近的衰减刚好达到设计指标要求,则阻带中其他频段的衰减就有很大富余量,存在较大的资源浪费。

等波纹最佳逼近法是一种优化设计方法,克服了窗函数法的缺点,使最大误差最小化,并在整个逼近频段上均匀分布。

用等波纹最佳逼近法设计的FIR 数字滤波器的幅频响应在通带和阻带都是等波纹的,而且可以分别控制通带和阻带波纹幅度。

与窗函数法相比,由于这种设计法使最大误差均匀分布,所以设计的滤波器性能价格比最高。

阶数相同时,这种设计方法使滤波器的最大逼近误差最小,即通带最大衰减最小,阻带最小衰减最大。

指标相同时,这种设计法使滤波器阶数最低。

3. 滤波器参数及实验程序清单(1) 滤波器参数选取根据加噪信号频谱图和实验要求,可选择一低通滤波器进行滤波,确定滤波器指标参数:通带截止频率Hz f p 130=,阻带截至频率Hz f s 150=,换算成数字频率,通带截止频率ππω26.02==T f p p ,通带最大衰减为dB p 1.0=α,阻带截至频率ππω3.02==T f s s ,阻带最小衰减为dB s 60=α。

(2) 实验程序清单 图1 程序流程图信号产生函数xtg 程序清单function xt=xtg%产生一个长度为N,有加性高频噪声的单频调幅信号xt,采样频率Fs=1000Hz %载波频率fc=Fs/10=100Hz,调制正弦波频率f0=fc/10=10Hz.N=1600;Fs=1000;T=1/Fs;Tp=N*T;t=0:T:(N-1)*T;fc=Fs/10;f0=fc/10; %载波频率fc=Fs/10,单频调制信号频率为f0=Fc/10;mt=cos(2*pi*f0*t); %产生单频正弦波调制信号mt ,频率为f0ct=cos(2*pi*fc*t); %产生载波正弦波信号ct ,频率为fcxt=mt.*ct; %相乘产生单频调制信号xtnt=2*rand(1,N)-1; %产生随机噪声nt%=======设计高通滤波器hn,用于滤除噪声nt 中的低频成分,生成高通噪声======= fp=150; fs=200;Rp=0.1;As=70; % 滤波器指标fb=[fp,fs];m=[0,1]; % 计算remezord函数所需参数f,m,devdev=[10^(-As/20),(10^(Rp/20)-1)/(10^(Rp/20)+1)];[n,fo,mo,W]=remezord(fb,m,dev,Fs); % 确定remez函数所需参数hn=remez(n,fo,mo,W); % 调用remez函数进行设计,用于滤除噪声nt中的低频成分yt=filter(hn,1,10*nt); %滤除随机噪声中低频成分,生成高通噪声yt%================================================================ xt=xt+yt; %噪声加信号fst=fft(xt,N);k=0:N-1;f=k/Tp;figure(1);subplot(2,1,1);plot(t,xt);grid;xlabel('t/s');ylabel('x(t)');axis([0,Tp/4,min(xt),max(xt)]);title('信号加噪声波形');subplot(2,1,2);plot(f,abs(fst)/max(abs(fst)));grid;title('信号加噪声的频谱');axis([0,Fs/2,0,1.2]);xlabel('f/Hz');ylabel('幅度');FIR数字滤波器设计及软件实现程序清单clear all;close allxt=xtg; %调用xtg产生信号xt, xt长度N=1600,并显示xt及其频谱fp=130;fs=150;Rp=0.1;As=60;Fs=1000; % 输入给定指标%用窗函数法设计滤波器wc=(fp+fs)/Fs; %理想低通滤波器截止频率(关于pi归一化)B=2*pi*(fs-fp)/Fs;Nb=ceil(11*pi/B);hn=fir1(Nb-1,wc,blackman(Nb));y1t=fftfilt(hn,xt,1600); %调用函数fftfilt对xt滤波figure(2);t=0:0.001:1.599; %绘制滤波后的信号时域波形图subplot(2,1,1);plot(t,y1t);grid;xlabel('t/s');ylabel('y_1(t)');title('滤波后的y_1(t)的波形');axis([0 0.5 -1 1]);subplot(2,1,2);[h w]=freqz(hn); %绘制低通滤波器的损耗函数曲线plot(w/pi,20*log10(abs(h)));grid;xlabel('ω/π');ylabel('幅度(dB )');title('窗函数法低通滤波器的损耗函数曲线');axis([0 1 -120 5]);%用等波纹最佳逼近法设计滤波器fb=[fp,fs];m=[1,0]; %确定remezord 函数所需参数f,m,devdev=[(10^(Rp/20)-1)/(10^(Rp/20)+1),10^(-As/20)];[Ne,fo,mo,W]=remezord(fb,m,dev,Fs); %确定remez 函数所需参数hn=remez(Ne,fo,mo,W); %调用remez 函数进行设计y2t=fftfilt(hn,xt,1600); %调用函数fftfilt 对xt 滤波figure(3);t=0:0.001:1.599; %绘制滤波后的信号时域波形图subplot(2,1,1);plot(t,y2t);grid;xlabel('t/s');ylabel('y_2(t)');title('滤波后的y_2(t)的波形');axis([0 0.5 -1 1]);subplot(2,1,2);[h w]=freqz(hn); %绘制低通滤波器的损耗函数曲线plot(w/pi,20*log10(abs(h)));grid;xlabel('ω/π');ylabel('幅度(dB )');title('等波纹逼近法低通滤波器的损耗函数曲线');axis([0 1 -80 5]);4. 实验结果在matlab 中键入以上程序,得到的仿真结果如下图2 具有加性噪声的信号x(t)及其频谱图3 窗函数法设计的滤波器损耗函数曲线及其滤波后的信号)(1t y图4 等波纹逼近法设计的滤波器损耗函数曲线及其滤波后的信号)(2t y由上述实验结果可见用窗函数法设计滤波器,滤波器长度 Nb=184。

实验五:FIR数字滤波器设计与软件实现

实验五:FIR数字滤波器设计与软件实现

实验五:FIR数字滤波器设计与软件实现一、实验指导1.实验目的(1)掌握用窗函数法设计FIR数字滤波器的原理和方法。

(2)掌握用等波纹最佳逼近法设计FIR数字滤波器的原理和方法。

(3)掌握FIR滤波器的快速卷积实现原理。

(4)学会调用MA TLAB函数设计与实现FIR滤波器。

2.实验内容及步骤(1)认真复习第七章中用窗函数法和等波纹最佳逼近法设计FIR数字滤波器的原理;(2)调用信号产生函数xtg产生具有加性噪声的信号xt,并自动显示xt及其频谱,如图1所示;图1 具有加性噪声的信号x(t)及其频谱如图(3)请设计低通滤波器,从高频噪声中提取xt中的单频调幅信号,要求信号幅频失真小于0.1dB,将噪声频谱衰减60dB。

先观察xt的频谱,确定滤波器指标参数。

(4)根据滤波器指标选择合适的窗函数,计算窗函数的长度N,调用MATLAB函数fir1设计一个FIR低通滤波器。

并编写程序,调用MATLAB快速卷积函数fftfilt实现对xt 的滤波。

绘图显示滤波器的频响特性曲线、滤波器输出信号的幅频特性图和时域波形图。

(4)重复(3),滤波器指标不变,但改用等波纹最佳逼近法,调用MA TLAB函数remezord 和remez设计FIR数字滤波器。

并比较两种设计方法设计的滤波器阶数。

提示:○1MA TLAB函数fir1的功能及其调用格式请查阅教材;○2采样频率Fs=1000Hz,采样周期T=1/Fs;○3根据图1(b)和实验要求,可选择滤波器指标参数:通带截止频率fp=120Hz,阻带截至频率fs=150Hz ,换算成数字频率,通带截止频率p 20.24p f ωπ=T =π,通带最大衰为0.1dB ,阻带截至频率s 20.3s f ωπ=T =π,阻带最小衰为60dB 。

○4实验程序框图如图2所示,供读者参考。

图2 实验程序框图4.思考题(1)如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器?请写出设计步骤.(2)如果要求用窗函数法设计带通滤波器,且给定通带上、下截止频率为pl ω和pu ω,阻带上、下截止频率为sl ω和su ω,试求理想带通滤波器的截止频率cl cu ωω和。

(完整word版)用窗函数法设计FIR数字滤波器

(完整word版)用窗函数法设计FIR数字滤波器

用窗函数法设计FIR 数字滤波器一、实验目的1.掌握用窗函数法设计FIR 数字滤波器的原理和方法。

2.熟悉线性相位FIR 数字滤波器特征。

3.了解各种窗函数对滤波特性的影响。

二、实验仪器微型计算机 matlab 软件 三、实验原理和方法如果所希望的滤波器的理想频率响应函数为 )(ωj d eH ,则其对应的单位脉冲响应为)(n h d =π21ωωωππd e e H j j d )(⎰-(2-1)窗函数设计法的基本原理是用有限长单位脉冲响应序列)(n h 逼近)(n h d 。

由于)(n h d 往往是无限长序列,且是非因果的,所以用窗函数)(n ω将)(n h d 截断,并进行加权处理,得到:)(n h =)(n h d )(n ω (2-2))(n h 就作为实际设计的FIR 数字滤波器的单位脉冲响应序列,其频率响应函数)(ωj d e H 为: )(ωj d eH =∑-=-1)(N n j e n h ω (2-3)式中,N 为所选窗函数)(n ω的长度。

由第七章可知,用窗函数法设计的滤波器性能取决于窗函数)(n ω的类型及窗口长度N 的取值。

设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。

各种类型的窗函数可达到的阻带最小衰减和过渡带宽度见第七章。

这样选定窗函数类型和长度N 后,求出单位脉冲响应)(n h =)(n h d ·)(n ω,并按式(2-3)求出)(ωj e H 。

)(ωj e H 是否满足要求,要进行验算。

一般在)(n h 尾部加零使长度满足于2的整数次幂,以便用FFT 计算)(ωj e H 。

如果要观察细节,补零点数增多即可。

如果)(ωj eH 不满足要求,则要重新选择窗函数类型和长度N ,再次验算,直至满足要求。

如果要求线性相位特性,则)(n h 还必须满足)1()(n N h n h --±= (2-4)根据上式中的正负号和长度N 的奇偶性又将线性相位FIR 滤波器分成四类。

FIR数字滤波器的MATLAB详细程序

FIR数字滤波器的MATLAB详细程序

%FIR-DF hd=ideal_lp(wc,M);Fs=32000;a=2*pi*6500;b=2*pi*7000;c=2*pi*9000;n1=0:4096;t=n1/Fs;xa=cos(a*t)+cos(b*t)+cos(c*t);%+cos(d*t);figure(1);y=fft(xa);plot(abs(y));title('fft(xa)变换');grid;Rp=0.25;As=52;%ws=pi*6600*2/Fs;wp=pi*6700*2/Fs;%gao tong%ws=pi*6700*2/Fs;wp=pi*6600*2/Fs;%di tongws=[pi*6600*2/Fs,pi*7400*2/Fs];wp=[pi*6800*2/Fs,pi*7200*2/Fs];%dai tong%ws=[pi*6600*2/Fs,pi*7400*2/Fs,pi*8600*2/Fs,pi*9400*2/Fs];wp=[pi*6800*2/Fs,pi*7200*2/Fs, pi*8800*2/Fs,pi*9200*2/Fs];%dai tong%ws=[pi*6800*2/Fs,pi*7200*2/Fs];wp=[pi*6600*2/Fs,pi*7400*2/Fs];%dai zuDB=abs(ws(1)-wp(1));%DB=abs(ws-wp);M0=ceil((As-8)/(2.285*DB));%阶数M=M0+mod(M0,2);%确保阶数为偶数N=M+1;%长度为奇数%0.112*(As-8.7);As>50;%0.5842*(As-21)^0.4+0.07886*(As-21);21<=As<=50;%0;As<21;if As>50beta=0.112*(As-8.7);elseif21<=As&&As<=50beta=0.5842*(As-21)^0.4+0.07886*(As-21);elsebeta=0;endwn=kaiser(N,beta);wc=(wp+ws)/2/pi;%fir1使用wc归一化%hn=fir1(M,wc,'high',wn);%gao tonghn=fir1(M,wc,wn);%dai tong,di tong%hn=fir1(M,wc,'stop',wn);%dai zufigure(2);plot(abs(wn));title('窗函数');grid;figure(3);[hh,w]=freqz(hn,1);freqzplot(hh,w,'linear');title('幅频/相频特性');%Hn=fft(hn);%plot(abs(Hn));title('FFT(Hn)');%freqz(hn,1);title('幅频特性');y=filter(hn,1,xa);figure(4);y1=fft(y);plot(abs(y1));title('高通滤波器滤波之后');grid;%=========验证=====================%验证%w_kai=wn';%hd=hn;%h=hd.*w_kai;%freqz_mN1=1000;[H,W]=freqz(hn,1,N1,'whole');%[H,W]=freqz(B,A,N1,'whole');delta_w=2*pi/N1;db=20*log10(abs(H)/max(abs(H))+eps);%通带波纹db数%rp1=-(min(db(wp/delta_w+1:1:501)))%gao tong yan zheng%as1=-round(max(db(1:1:ws/delta_w+1)))%rp1=-(min(db(1:1:wp/delta_w+1)))%di tong yan zheng%as1=-round(max(db(ws/delta_w+1:1:501)))rp1=-(min(db(wp(1)/delta_w+1:1:wp(2)/delta_w+1)))%dai tong yan zhengas1=round(max(-max(db(1:1:ws(1)/delta_w+1)),-max(db(ws(2)/delta_w+1:1:501))))%rp1=-min(min(db(1:1:wp(1)/delta_w+1)),min(db(wp(2)/delta_w+1:1: 501)))%dai zu yan zheng%as1=-round(max(db(ws(1)/delta_w+1:1:ws(2)/delta_w+1)))%N1=4096;%Hw=fft(h,N1);%wk=2*pi*[0:N1-1]/N1;%hgw=Hw.*exp(j*wk*N/2);%rp=max(20*log10(abs(hgw)))%%hgmin=min(real(hgw));%rs=20*log10(abs(hgmin))%w_kai=wn';%hd=hn;%h=hd.*w_kai;%d_w=2*pi/1000;%[db,w0]=freqz(h,1);%rp1=-(min(db(wp/d_w+1:1:501))) %as1=-round(max(db(1:1:ws/d_w+1)))。

DSP原理与应用(张卫宁)课后习题答案

DSP原理与应用(张卫宁)课后习题答案

第一章:1、数字信号处理的实现方法一般有哪几种?答:数字信号处理的实现是用硬件软件或软硬结合的方法来实现各种算法。

(1) 在通用的计算机上用软件实现;(2) 在通用计算机系统中加上专用的加速处理机实现;(3) 用通用的单片机实现,这种方法可用于一些不太复杂的数字信号处理,如数字控制;(4) 用通用的可编程DSP芯片实现。

与单片机相比,DSP芯片具有更加适合于数字信号处理的软件和硬件资源,可用于复杂的数字信号处理算法;(5) 用专用的DSP芯片实现。

在一些特殊的场合,要求的信号处理速度极高,用通用DSP 芯片很难实现(6)用基于通用dsp核的asic芯片实现。

2、简单的叙述一下dsp芯片的发展概况?答:第一阶段,DSP的雏形阶段(1980年前后)。

代表产品:S2811。

主要用途:军事或航空航天部门。

第二阶段,DSP的成熟阶段(1990年前后)。

代表产品:TI公司的TMS320C20主要用途:通信、计算机领域。

第三阶段,DSP的完善阶段(2000年以后)。

代表产品:TI公司的TMS320C54主要用途:各个行业领域。

3、可编程dsp芯片有哪些特点?答:1、采用哈佛结构(1)冯。

诺依曼结构,(2)哈佛结构(3)改进型哈佛结构2、采用多总线结构3.采用流水线技术4、配有专用的硬件乘法-累加器5、具有特殊的dsp指令6、快速的指令周期7、硬件配置强8、支持多处理器结构9、省电管理和低功耗4、什么是哈佛结构和冯。

诺依曼结构?它们有什么区别?答:哈佛结构:该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。

冯。

诺依曼结构:该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。

FIR滤波器设计与实现实验报告

FIR滤波器设计与实现实验报告

FIR滤波器设计与实现实验报告目录一、实验概述 (2)1. 实验目的 (3)2. 实验原理 (3)3. 实验设备与工具 (4)4. 实验内容与步骤 (6)5. 实验数据与结果分析 (7)二、FIR滤波器设计 (8)1. 滤波器设计基本概念 (9)2. 系数求解方法 (10)频谱采样法 (11)最小均方误差法 (14)3. 常用FIR滤波器类型 (15)线性相位FIR滤波器 (16)非线性相位FIR滤波器 (18)4. 设计实例与比较 (19)三、FIR滤波器实现 (20)1. 硬件实现基础 (21)2. 软件实现方法 (22)3. 实现过程中的关键问题与解决方案 (23)4. 滤波器性能评估指标 (25)四、实验结果与分析 (26)1. 实验数据记录与处理 (27)2. 滤波器性能测试与分析 (29)通带波动 (30)虚部衰减 (31)相位失真 (32)3. 与其他设计方案的对比与讨论 (33)五、总结与展望 (34)1. 实验成果总结 (35)2. 存在问题与不足 (36)3. 未来发展方向与改进措施 (37)一、实验概述本次实验的主要目标是设计并实现一个有限脉冲响应(Finite Impulse Response,简称FIR)滤波器。

FIR滤波器是数字信号处理中常用的一种滤波器,具有线性相位响应和易于设计的优点。

本次实验旨在通过实践加深我们对FIR滤波器设计和实现过程的理解,提升我们的实践能力和问题解决能力。

在实验过程中,我们将首先理解FIR滤波器的基本原理和特性,包括其工作原理、设计方法和性能指标。

我们将选择合适的实验工具和环境,例如MATLAB或Python等编程环境,进行FIR滤波器的设计。

我们还将关注滤波器的实现过程,包括代码编写、性能测试和结果分析等步骤。

通过这次实验,我们期望能够深入理解FIR滤波器的设计和实现过程,并能够将理论知识应用到实践中,提高我们的工程实践能力。

本次实验报告将按照“设计原理设计方法实现过程实验结果与分析”的逻辑结构进行组织,让读者能够清晰地了解我们实验的全过程,以及我们从中获得的收获和启示。

DSP FIR算法实验

DSP FIR算法实验

实验5: 有限冲激响应滤波器(FIR)算法实验一.实验目的1.掌握用Matlab设计FIR数字滤波器的原理和方法。

2.掌握FIR数字滤波器的DSP实现方法。

3. 熟悉在CCS环境中信号波形的观察方法。

二.实验设备PC兼容机一台,操作系统为Windows2000,安装Code Composer Studio 4.2软件。

三.实验原理1.采用MATLAB设计FIR数字滤波器采用MATLAB设计FIR数字滤波器的方法有多种,本实验采用fir1函数,使用方法简介如下:(1)设计低通滤波器,格式为:b=fir1(N,Wn)或b = fir1(N,Wn,'low')其中N+1为滤波器阶数,b为返回的长度为N+1的系数向量。

Wn为归一化边界频率,0 < Wn < 1.0,Wn 处增益为-6dB。

Wn =1.0对应的非归一化频率为Fs/2,其中Fs为采样频率。

例,设Fs=8000Hz,低通滤波器的边界频率fp=1000Hz,则对应的归一化数字角频率为Wn=fp/(Fs/2)=0.25,取N=31(对应的滤波器阶数为32)。

于是,该低通fir滤波器的设计指令为b=fir1(31,0.25)。

执行该指令得到的系数为:b=[-0.000630469148644,-0.001818568124278,-0.002561941612458,-0.001587493994396,0.002369512668975,0.008332496978353,0.011803612855041,0.00675929677933,-0.009174511997729,-0.029730906886036,-0.039816452266422,-0.022301647638688,0.031027965907247,0.111143500492515,0.192455402100706,0.243730203886485,0.243730203886485,0.192455402100706,0.111143500492515,0.031027965907247,-0.022301647638688,-0.039816452266422,-0.029730906886036,-0.009174511997729,0.00675929677933,0.011803612855041,0.008332496978353,0.002369512668975,-0.001587493994396,-0.002561941612458,-0.001818568124278,-0.000630469148644]注意: 上述滤波器系数为浮点格式,当DSP程序中采用整数格式时。

线性相位FIR数字滤波器设计

线性相位FIR数字滤波器设计

一、设计目的1. 掌握窗函数法设计FIR 滤波器的原理和方法,观察用几种常用窗函数设计的FIR 数字滤波器技术指标;2. 掌握FIR 滤波器的线性相位特性;3. 了解各种窗函数对滤波特性的影响。

二、设计原理如果所希望的滤波器的理想频率响应函数为H d (e jω),则其对应的单位脉冲响应为ωπωππωd e e H n h n j j d ⎰-=)(21)(,用窗函数w N (n)将h d (n)截断,并进行加权处理,得到实际滤波器的单位脉冲响应h (n )=h d (n )w N (n ),其频率响应函数为n j N n j e n h e H ωω--=∑=10)()(。

如果要求线性相位特性,则h (n )还必须满足)1()(n N h n h --±=。

可根据具体情况选择h(n)的长度及对称性。

可以调用MATLAB 工具箱函数fir1实现本实验所要求的线性相位FIR-DF 的设计,调用一维快速傅立叶变换函数fft 来计算滤波器的频率响应函数。

fir1是用窗函数法设计线性相位FIRDF 的工具箱函数,调用格式如下:hn=fir1(N, wc, ‘ftype’, window) fir1实现线性相位FIR 滤波器的标准窗函数法设计。

hn=fir1(N,wc)可得到6 dB 截止频率为wc 的N 阶(单位脉冲响应h(n)长度为N+1)FIR 低通滤波器,默认(缺省参数windows)选用hammiing 窗。

其单位脉冲响应h(n)满足线性相位条件:h(n)=h(N-1-n)其中wc 为对π归一化的数字频率,0≤wc ≤1。

当wc=[wc1, wc2]时,得到的是带通滤波器。

hn=fir1(N,wc,’ftype’)可设计高通和带阻滤波器。

当ftype=high 时,设计高通FIR 滤波器;当ftype=stop 时,设计带阻FIR 滤波器。

应当注意,在设计高通和带阻滤波器时,阶数N 只能取偶数(h(n)长度N+1为奇数)。

FIR滤波器组的设计与Matlab仿真

FIR滤波器组的设计与Matlab仿真

FIR 滤波器组的设计与Matlab 仿真1 引言在许多数字信号处理系统中,如语音或音频信号处理中,有限冲激响应(FIR )滤波器是最常用的组件之一,它完成信号预调、频带选择和滤波等功能。

FIR 滤波器虽然在截止频率的边沿陡峭性能上不及无限冲激响应(IIR )滤波器,但是却具有严格的线性相位特性,稳定性好,能设计成多通带(或多阻带)滤波器组,所以能够在数字信号处理领域得到广泛的应用。

Matlab 是mathswork 公司推出的一套高性能的数值计算和可视化软件,它集数值分析、信号运算、矩阵运算、信号处理和图形显示于一体,具有很强的绘图功能。

利用它自带的丰富的函数和信号处理工具箱,可以很方便地设计和仿真FIR 滤波器组。

2 用窗函数法设计FIR 滤波器一个离散时间系统H (z )=B (z )/A (z ),若分母多项式A (z )的系数a 1=…=a N =0,那么该系统即变成FIR 系统,即n Mn n M M z b z b z b b z H -=--∑=+++=0110)( (1)显然,系数b 0,b 1,…,b M 即是该系统的单位抽样响应h(0) ,h(1) ,…,h(M) ,且当n>M 时,h(n)≡0。

所对应的FIR 滤波器的转移函数为n Mn z n h z H -=∑=0)()( (2)H (z )的频率响应应近似为H d (e jw ),而且是线性相位的。

FIR 滤波器有许多行之有效的设计方法,如窗函数法、频率抽样法及最佳一致逼近法等,其中窗函数法很适合于带通滤波器组的设计。

一个截止频率为ωc 的理想低通滤波器H d (e jw ),其冲激响应h d (n)是无限长和非因果的。

对h d (n)加窗(窗函数用w(n)表示,窗宽为有限值M )的结果,便得到一个FIR 滤波器h(n),它是对所要求的理想低通滤波器的逼近。

如果窗函数w(n)和FIR 滤波器h(n)的频率特性分别用W(e jw )和H(e jw )表示,则H(e jw )将等于W(e jw )和H d (e jw )的卷积。

FIR滤波器的DSP实现

FIR滤波器的DSP实现

H(z) h(i)z i (7-2)
i0
● 如图7-10所示为横截型(又称直接型或卷积型)FIR数字滤波器的结构
图。
x(n) h(0)
Z-1 h(1)
Z-1 h(2)
Z-1 h(N-2)
图7-10 横截型FIR数字滤波器的结构图
h(N-1) y(n)
1 线性缓冲区法
● 线性缓冲区法又称延迟线法。其方法是:对于n=N的FIR滤波器,在数据存储器中开辟一个N单元 的缓冲区,存放最新的N个样本;滤波时从最老的样本开始,每读一个样本后,将此样本向下移 位;读完最后一个样本后,输入最新样本至缓冲区的顶部。
.set 1
KS
.set 256
;输入样本数据个数
COEF_FIR .sect "COEF_FIR"
;FIR滤波器系数
●N
.set
17
;FIR滤波器阶数
.word 0,158,264,-290,-1406,-951,3187,9287,12272
.word9287,3187,-951,-1406,-290,264,158,0
区的长度为N/2。缓冲区指针AR2指向New 缓冲区中最新的数据;AR3指向Old 缓冲区中最老的 数据,并在程序存储器中设置系数表,如图7-18所示。
2.(AR2)+(AR3)→AH(累加器A的高位) ● (AR2)-1→AR2,(AR3)-1→AR3 3.将累加器B清0,重复执行以下操作N/2次(i=0,1,2,3): ● (AH)×系数ai+(B)→B,系数指针(PAR)加1 ● (AR2)+(AR3)→AH,AR2 和AR3减1 ● 并保存或输出结果(结果在BH中)。
MAC

FIR滤波器程序清单

FIR滤波器程序清单

6 程序清单.title "FIR.asm".mmregsSTACK .usect "STACK",100H ;设置堆栈.def _main ;可引用.bss y,10xn .usect "DA TA1",5 ;自定义初始化段,段名DA TA1 xn2 .usect "DA TA2",5 ;自定义初始化段,段名DA TA2 size .set 10 ;对符号定义.datatable: .word 7FFFh ;输入数据.word 0.word 0.word 0.word 0.word 0.word 0.word 0.word 0.word 0COFF: .word 1*32768/10,2*32768/10 ;输入系数.word 3*32768/10,4*32768/10.word 5*32768/10,5*32768/10.word 4*32768/10,3*32768/10.word 2*32768/10,1*32768/10.text_main: STM #xn,AR2 ;AR2指向新缓冲区第一单元RPT #9 ;循环10次MVPD table,*AR2+ ;给AR2赋初值STM #xn2,AR4 ;AR4指向老缓冲区第一单元RPT #4 ;循环5次MVPD table,*AR4+ ;赋初值STM #xn2,AR4LD #xn,DPSSBX FRCT ;设置小数运算位STM #xn,AR2STM #xn2+(size-1),AR3 ;AR3指向老缓冲区最后一单元STM #size,BK ;运算次数STM #-1,AR0ST #7FFFH,@xn ;输入数据STM #y,AR5 ;存储数据FIR1: ADD *AR2+0%,*AR3+0%,A ;AH=x(n)+x(11)RPTZ B,#(size-1) ;设置循环次数FIRS *AR2+0%,*AR3+0%,COFF ;B=B+AH*h0STH B,*AR5+ ;保存结果MAR *+AR2(2)% ;修正AR2指向新缓冲区最老数据MAR *AR3+% ;修正AR3指向老缓冲区最老数据MVDD *AR2,*AR3+0% ;新缓冲区向老缓冲区传送一个数B FIR1 ;跳转ST #0H,@xn ;输入新数据.ENDMEMORY{PAGE 0: /* program space */EPROM: org = 0x0E000, len = 0x0100VECS: org = 0x0FF80, len = 0x0080PAGE 1: /* data space */SRAM: org=0x60,len=0x0200DRAM: org = 0x0280, len = 0x1000 /* */}SECTIONS{.vectors : {} > VECS PAGE 0 /* interrupt vector table */.text : {} > EPROM PAGE 0 /* program code */.data : {} > EPROM PAGE 0 /* initialized data */.bss : {} > SRAM PAGE 1 /* uninitialized vars for applications */stk : {} > DRAM PAGE 1}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档