实验无限冲激响应滤波器IIR算法实验

合集下载

实验七--冲激响应不变法IIR数字滤波器设计

实验七--冲激响应不变法IIR数字滤波器设计

实验名称:实验七 冲激响应不变法IIR 数字滤波器设计一、实验目的1、掌握构成一个频率响应与给定的滤波特性相接近的模拟滤波器的设计原理。

2、掌握用冲激响应不变法设计IIR 数字滤波器的基本原理和算法。

3、了解数字滤波器和模拟滤波器的频率响应特性,掌握相应的计算方法,分析用冲激响应不变法获得的数字滤波器频率响应特性中出现的混叠现象。

二、实验原理与计算方法1、冲激响应不变法设计IIR 数字滤波器的基本原理和算法采用冲激响应不变法设计数字滤波器,就是使其单位样值响应)(n h 与相应的模拟滤波器的冲激响应)(t h a 在抽样点处的量值相等,即)()()(nT h t h n h a nTt a === (1)其中T 为抽样周期。

因此用冲激响应不变法设计IIR 数字滤波器的基本步骤,就是首先根据设计要求确定相应的模拟滤波器的传递函数)(s H a ,经Laplace 反变换求出冲激响应)(t h a 后,对它进行抽样得到的)(nT h a 等于数字滤波器的单位样值响应)(n h ,再经z 变换所得)(z H 就是数字滤波器的传递函数。

如果模拟滤波器的传递函数)(s H a 的N 个极点i s 都是单极点,则可以将)(s H a 写成部分分式展开的形式∑=-=Ni iia s s A s H 1)( (2) 那么,经Laplace 反变换求出的模拟滤波器的冲激响应)(t h a 为)()(1t u e A t h Ni t s i a i ∑==相对应的数字滤波器的单位样值响应为)()()(1n u eA t h n h Ni nTs i nTt a i ∑====对上式作z 变换,得∑∑∑∑∑=-=∞=-∞==--===ni Ts iN i n nTn s in nTs i Ni n z eA z eA eA zz H i i i 11111)( (3)由上面的推导可见,只要模拟滤波器的传递函数)(s H a 的N 个极点i s 都是单极点,当已经求出各个极点值i s 和部分分式的系数i A 后,则可以从模拟滤波器的传递函数的表达式(2)直接得到数字滤波器的传递函数)(z H 的表达式(3)。

IIR数字滤波器设计实验报告

IIR数字滤波器设计实验报告

实验三IIR数字滤波器设计实验报告一、实验目的:1.通过仿真冲激响应不变法和双线性变换法2.掌握滤波器性能分析的基本方法二、实验要求:1.设计带通IIR滤波器2.按照冲激响应不变法设计滤波器系数3. 按照双线性变换法设计滤波器系数4. 分析幅频特性和相频特性5. 生成一定信噪比的带噪信号,并对其滤波,对比滤波前后波形和频谱三、基本原理:㈠IIR模拟滤波器与数字滤波器IIR数字滤波器的设计以模拟滤波器设计为基础,常用的类型分为巴特沃斯(Butterworth)、切比雪夫(Chebyshev)Ⅰ型、切比雪夫Ⅱ型、贝塞尔(Bessel)、椭圆等多种。

在MATLAB信号处理工具箱里,提供了这些类型的IIR数字滤波器设计子函数。

(二)性能指标1.假设带通滤波器要求为保留6000hz~~7000hz频段,滤除小于2000hz和大宇9000hz频段2.通带衰减设为3Db,阻带衰减设为30dB,双线性变换法中T取1s.四、实验步骤:1.初始化指标参数2.计算模拟滤波器参数并调用巴特沃斯函数产生模拟滤波器3.利用冲激响应不变法和双线性变换法求数字IIR滤波器的系统函数Hd (z)4.分别画出两种方法的幅频特性和相频特性曲线5.生成一定信噪比的带噪信号6.画出带噪信号的时域图和频谱图6.对带噪信号进行滤波,并画出滤波前后波形图和频谱图五、实验结果模拟滤波器的幅频特性和相频特性:101010101Frequency (rad/s)P h a s e (d e g r e e s )1010101011010-5100Frequency (rad/s)M a g n i t u d e在本实验中,采用的带通滤波器为6000-7000Hz ,换算成角频率为4.47-0.55,在上图中可以清晰地看出到达了题目的要求。

冲击响应不变法后的幅频特性和相频特性:0.10.20.30.40.50.60.70.80.91Normalized Frequency (⨯π rad/sample)P h a s e (d e g r e e s )0.10.20.30.40.50.60.70.80.91Normalized Frequency (⨯π rad/sample)M a g n i t u d e (d B )双线性变换法的幅频特性和相频特性:0.10.20.30.40.50.60.70.80.91Normalized Frequency (⨯π rad/sample)P h a s e (d e g r e e s )00.10.20.30.40.50.60.70.80.91Normalized Frequency (⨯π rad/sample)M a g n i t u d e (d B )通过上图比较脉冲响应不变法双线性变换法的幅频特性和相频特性,而在在幅频曲线上几乎没有差别,都能达到相同的结果。

iir滤波器实验报告

iir滤波器实验报告

iir滤波器实验报告IIR滤波器实验报告引言:数字信号处理是现代通信、音频处理和图像处理等领域中不可或缺的技术。

滤波器作为数字信号处理的重要组成部分,被广泛应用于信号去噪、频率分析和信号重建等方面。

本实验旨在通过设计和实现一个IIR滤波器,探究其在信号处理中的应用和性能。

一、背景知识1.1 数字滤波器数字滤波器是一种能够改变信号频率特性的系统,可以通过去除或增强特定频率的成分来实现信号处理的目的。

根据其传递函数的特点,数字滤波器可以分为FIR(有限脉冲响应)和IIR(无限脉冲响应)滤波器。

1.2 IIR滤波器IIR滤波器是一种具有无限脉冲响应的滤波器,其传递函数中包含了反馈回路。

相比于FIR滤波器,IIR滤波器具有更窄的转换带宽和更陡峭的滚降特性,能够更好地逼近理想滤波器的频率响应。

二、实验目的本实验旨在通过设计和实现一个IIR滤波器,探究其在信号处理中的应用和性能。

具体实验目标如下:1. 理解IIR滤波器的原理和设计方法;2. 掌握IIR滤波器的设计过程和参数选择;3. 分析IIR滤波器在不同输入信号下的性能表现。

三、实验设计与实施3.1 IIR滤波器的设计在本实验中,我们选择了巴特沃斯滤波器作为IIR滤波器的设计模型。

巴特沃斯滤波器具有最平坦的幅频响应特性和最小的群延迟,适用于许多实际应用场景。

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

阶数决定了滤波器的复杂度和性能,而截止频率则决定了滤波器的频率响应特性。

根据实际需求和信号特性,我们选择了一个二阶巴特沃斯低通滤波器,截止频率为1kHz。

其次,根据巴特沃斯滤波器的设计公式,我们可以计算出滤波器的传递函数和巴特沃斯极点的位置。

通过极点的选择和配置,我们可以调整滤波器的频率响应和滚降特性。

3.2 IIR滤波器的实施根据设计得到的传递函数和极点位置,我们可以使用MATLAB等工具进行IIR滤波器的实施和验证。

具体步骤如下:1. 根据巴特沃斯滤波器的传递函数公式,计算出滤波器的系数;2. 使用MATLAB的filter函数,将待处理的信号输入滤波器,得到滤波后的输出信号;3. 对比输入和输出信号的频谱特性,分析滤波器的性能。

实验无限冲激响应滤波器IIR算法实验

实验无限冲激响应滤波器IIR算法实验

实验 3 :无限冲激响应滤波器IIR算法实验一、实验目的1. 熟悉IIR 数字滤波器特性;2.掌握IIR数字滤波器的设计过程;3.掌握 IIR 数字滤波器性能测试方法;二、实验设备兼容机操作系统Composer Studio v5三、实验内容1.掌握IIR数字滤波器的基础理论;2.基于MATLAB的IIR数字滤波器参数确定方法;3.采用C语言编程实现低通IIR 滤波器;4.掌握基于CCS的波形观察方法;观察滤波前后的波形变化;四.实验原理分析要求:使用低通巴特沃斯滤波器,设计通带截止频率f p为1kHz、增益为-3dB,阻带截止频率f st为12kHz、衰减为30dB,采样频率f s为25kHz;设计:通带截止频率为: f p = 1000Hz, f st = 12000Hz一、滤波器参数计算模拟预畸变通带截止频率为: w p = 2f s tan2πf p/2f s = 弧度/秒模拟预畸变阻带截止频率为:w st = 2f s tan2πf st/2f s= 弧度/秒N = ,则:一阶巴特沃斯滤波器就足以满足要求;一阶模拟巴特沃斯滤波器的传输函数为: Hs=w p/s+w p=s+由双线性变换定义 s=2f s z-1/z+1得到数字滤波器的传输函数为:因此,差分方程为: yn=n-1+n+n-1;二、基于MATLAB的滤波器参数求解1IIR数字滤波器阶次的选择的MATLAB函数N,w c = buttordw p,w st,Rp,As;N,w c = cheb1ordw p,w st,Rp,As;N,w c = cheb2ordw p,w st,Rp,As;N,w c = ellipordw p,w st,Rp,As;对低通滤波器,必须有w p < w st对高通滤波器,必须有w p > w st对带通滤波器,必须有 w s1 < w p1 < w p2 < w s2对带阻滤波器,必须有 w p1 < w s1 < w s2 < w p22 IIR数字滤波器的设计b,a = butterN,wc,’ftype’b,a = cheby1N,wc,’ftype’b,a = cheby2N,wc,’ftype’b,a = ellipN,wc,’ftype’三、基于C语言编程的IIR 数字滤波器编程实现程序流程图五.实验步骤1.打开 CCS,进入 CCS 的操作环境;2.打开工程,浏览程序:工程目录为C:\ICETEK\ICETEK-DM6437-A\Lab0402_IIR3.点击图标,CCS 会自动编译、链接和下载程序;4.运行程序;可以观察收到的数据;选择菜单 Tools->Graph->Dual Time,进行如下设置:Dual Time 参数设置选择菜单 Tools->Graph->FFT Magnitude, 新建 2 个观察窗口,分别进行如下设置:5.设置断点:在有注释“break point”的语句设置软件断点;使用菜单的 View->Breakpoints,打开断点观察窗口,在刚才设置的断点上右键->Breadk point properties 调出断点的属性设置界面,设置 Action 为 Refresh All windows;则程序每次运行到断点,所有的观察窗口值都会被刷新;其中,输入波形:一个低频正弦波与一个高频正弦波的叠加;输出波形:经过低通滤波后的低频正弦波;6.运行并观察结果:⑴ F8 键运行程序;⑵ 观察“IIR”窗口中时域图形;观察滤波效果;7.退出 CCS六.实验结果输入波形为一个低频率的正弦波与一个高频的余弦波叠加而成;如图:通过观察频域和时域图,得知:输入波形中的低频波形通过了滤波器,而高频部分则被衰减; 六.问题与思考基本任务:1.试微调±改变程序中 f U的取值,观察步长因子μ在自适应算法中所起的作用;2.确定程序中的信号频率,试选用设计不同的信号、噪声组合,基于MATLAB设计不同的类型的滤波器,并基于CCS实现,并观察实验的结果;3.分析实验程序,细化算法流程图;4.结合CCS的使用,分析实验结果提高任务:5.尝试使用信号源生成组合信号,经过A/D采样后,送IIR滤波器实现; 源代码:include""define IIRNUMBER 2 /典范性的滤波器阶数/define SIGNAL1F 1000 /正弦信号频率,代码中没有使用/define SIGNAL2F 4500 /正弦信号频率,代码中没有使用/define SAMPLEF 10000 /采样频率,代码中没有使用/define PIfloat InputWave; /输入给IIR滤波器的信号,每次输出一个点/float IIR; /IIR滤波,每次输出一个点//滤波器的设计采用了案例的结果,应该重新设计/float fBnIIRNUMBER={ , }; /IIR滤波器的分子多项式系数,有错/ float fAnIIRNUMBER={ , }; /IIR滤波器的分母多项式系数/float fXnIIRNUMBER={ }; /IIR滤波器的迭代初始值/float fYnIIRNUMBER={ }; /IIR滤波器的输出值/float fInput,fOutput; /输入点和输出点/float fSignal1,fSignal2; /信号1、2的初始相位/float fStepSignal1,fStepSignal2; /信号1、2的相位步长/float f2PI;int i;float fIn256,fOut256;int nIn,nOut;main{nIn=0; nOut=0;f2PI=2PI;fSignal1=;fSignal2=PI;// fStepSignal1=2PI/30;// fStepSignal2=2PI;fStepSignal1=2PI/50; /信号1的相位步长:f1/fs = 1/50/ fStepSignal2=2PI/; /信号2的相位步长:f1/fs = 1// while 1{fInput=InputWave;fInnIn=fInput;nIn++; nIn%=256;fOutput=IIR;fOutnOut=fOutput;nOut++; / 请在此句上设置软件断点 /if nOut>=256{nOut=0;}}}float InputWave{for i=IIRNUMBER-1;i>0;i--{fXni=fXni-1;fYni=fYni-1;}fXn0=sin fSignal1+cos fSignal2/;fYn0=;fSignal1+=fStepSignal1;if fSignal1>=f2PI fSignal1-=f2PI;fSignal2+=fStepSignal2;if fSignal2>=f2PI fSignal2-=f2PI;return fXn0;}float IIR{float fSum;fSum=;/ yn=n-1+n+n-1 /for i=0;i<IIRNUMBER;i++{fSum+=fXnifAni;fSum+=fYnifBni;}return fSum;}。

无限冲激响应数字滤波器设计实验报告

无限冲激响应数字滤波器设计实验报告

实验5 无限冲激响应数字滤波器设计一、实验目的1、掌握双线性变换法及脉冲相应不变法设计IIR数字滤波器的具体设计方法;2、熟悉用双线性变换法及脉冲响应不变法设计低通、高通和带通IIR数字滤波器的计算机编程。

二、实验原理在MATLAB中,可以用下列函数辅助设计IIR数字滤波器:1)利用buttord和cheb1ord可以确定低通原型巴特沃斯和切比雪夫滤波器的阶数和截止频率;如:求阶数[N, Wn] = cheb1ord (Wp, Ws, Rp, Rs,’s’)选择项说明:high-类别。

缺省为low; s-模/数,缺省为数Rp即p, Rs即s ; Wn-Chebyshev自然频率(3dB频率),数字设计: Wp =p/ Ws=s/ 。

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可以完成脉冲响应不变法的模拟滤波器到数字滤波器的转换。

三、实验内容利用MATLAB编程,用脉冲响应不变法和双线性变换法设计一个数字带通滤波器,指标要求如下:通带边缘频率:,,通带峰值起伏:;阻带边缘频率:,,最小阻带衰减:。

1.采用切比雪夫程序:%%%%%%%%%%%采用切比雪夫%%%%%%%%%%脉冲响应format compactfs=1000;%%%%%%%%%%采样频率wp1=0.45*pi*fs;wp2=0.65*pi*fs;ws1=0.3*pi*fs;ws2=0.8*pi*fs;[N,wn]=cheb1ord([wp1 wp2],[ws1 ws2],1,40,'s');[B,A]=cheby1(N,1,wn,'s');[num,den]=impinvar(B,A,fs);[h1,w]=freqz(num,den);%%%%%%%%%%双线性法wp3=2*fs*tan(pi*0.45/2);wp4=2*fs*tan(pi*0.65/2);ws3=2*fs*tan(pi*0.3/2);ws4=2*fs*tan(pi*0.8/2);[N,wn]=cheb1ord([wp1 wp2],[ws1 ws2],1,40,'s');[B,A]=cheby1(N,1,wn,'s');[num,den]=bilinear(B,A,fs);[h2,w]=freqz(num,den);f=w/pi*fs/2;plot(f,20*log10(abs(h1)),'-.',f,20*log10(abs(h2)),'-'); axis([0,600,-80,10]);grid;title('采用切比雪夫')xlabel('f')ylabel('幅度/dB')图形:2.采用巴特沃斯的程序:%%%%%%%%%%%%%%%%采用巴特沃斯format compactfs=1000;%%%%%%%%%%采样频率wp1=0.45*pi*fs;wp2=0.65*pi*fs;ws1=0.3*pi*fs;ws2=0.8*pi*fs;[N,wn]=buttord([wp1 wp2],[ws1 ws2],1,40,'s'); [B,A]=butter(N,wn,'s');[num,den]=impinvar(B,A,fs);[h1,w]=freqz(num,den);%%%%%%%%%%双线性法wp3=2*fs*tan(pi*0.45/2);wp4=2*fs*tan(pi*0.65/2);ws3=2*fs*tan(pi*0.3/2);ws4=2*fs*tan(pi*0.8/2);[N,wn]=buttord([wp1 wp2],[ws1 ws2],1,40,'s');[B,A]=butter(N,wn,'s');[num,den]=bilinear(B,A,fs);[h2,w]=freqz(num,den);f=w/pi*fs/2;plot(f,20*log10(abs(h1)),'-.',f,20*log10(abs(h2)),'-');axis([0,600,-80,10]);grid;title('采用巴特沃斯')xlabel('f')ylabel('幅度/dB')图形:四.小结双线性变换法采用非线性频率压缩方法,它克服了频率混叠的现象,它适合低通,高通,带通,带阻滤波器的设计;用脉冲响应不变法设计的优点是频率坐标变换是线性的,它可以很好的重现原模拟滤波器的频率特性,但它只适合低通和带通滤波器的设计。

无限脉冲响应数字滤波器IIR设计

无限脉冲响应数字滤波器IIR设计

无限脉冲响应数字滤波器(IIR )设计所谓的数字滤波,指的是输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分。

数字滤波可分为无限脉冲响应(IIR )滤波和有限脉冲响应(FIR )滤波。

本次试验利用VISUAL DSP++ 软环境SIMULATOR 模拟实现无限脉冲响应(IIR )数字信号处理。

无限脉冲响应(IIR)的系统函数为:1()1Mrrr N kk k bz H Z a z-=-==+∑∑ 公式1即如果输入为X(Z),输出为Y(N),则:Y(Z)= X(Z )×H(Z),即01()()1Mrr r N kk k b zY Z X Z a z -=-==+∑∑ 公式2本试验中利用的公式是对上面的公式2对了相应的形式变化,利用中间变量11()()1Nkk k W Z X Z a z -==+∑ 公式3那么()()Mr r r Y Z W N b z -==∑ 公式4因此,本次试验设计了一个4阶IIR 滤波,其对应的公式3和公式4的时域公式如下:W(n)=x(n)*scale+w(n-1)*a1+w(n-2)*a2+w(n-3)*a3+w(n-4)*a4;公式5y(n)=w(n)+w(n-1)*b1+w(n-2)*b2+w(n-3)*b3+w(n-4)*b4;公式6在本次设计中由于系数a4,a3,a2,a1,b4,b3,b2,b1都是用户自己初始化的时候给定的且均为常数,所以公式5和公式6也相应可以变为公式7和公式8:W(n)=x(n)*scale+w(n-1)*a4+w(n-2)*a3+w(n-3)*a2+w(n-4)*a1 公式7 y(n)=w(n)+w(n-1)*b4+w(n-2)*b3+w(n-3)*b2+w(n-4)*b1 公式8其中x(n)是输入的数字序列。

从公式5和公式6可知:只要我们设定设计需要的a4,a3,a2,a1,b4,b3,b2,b1,以及初始化w(n-1), w(n-2), w(n-3), w(n-4),就可以得到我们所需要的滤波器了。

无限冲激响应(IIR)数字滤波器设计

无限冲激响应(IIR)数字滤波器设计

实验四 无限冲激响应(IIR )数字滤波器设计一、实验目的1.熟悉用双线性变换法设计IIR 数字滤波器的原理和方法;2.了解用脉冲响应不变法设计IIR 数字滤波器的原理和方法;3.掌握双线性变换及脉冲响应不变法设计的滤波器的频域特性,了解双线性变换法及脉冲响应不变法的特点;4.掌握数字滤波器的计算机仿真方法;二、实验原理介绍IIR 数字滤波器的系统函数为1z -的有理分式: 1011()1N kk Nk k b z H z a z -=-==+∑∑ 设计IIR 滤波器的系统函数,就是要确定()H z 的阶数N 及分子分母多项式的系数k a 和k b ,使其()()j j z e H e H z ωω==满足指定的频率特性。

由于模拟滤波器的设计有许多简单而严谨的设计公式和大量的图表可以利用,因此IIR 滤波器设计的方法之一是:先设计一个合适的模拟滤波器,然后将模拟滤波器通过适当的变换转换成满足给定指标的数字滤波器。

1、Butterworth 模拟低通滤波器221()1a N c H j Ω=⎛⎫Ω+ ⎪Ω⎝⎭幅度平方函数:其中,N 为滤波器的阶数,c Ω为通带截止频率。

2.Chebyshev 模拟低通滤波器 2221()1()a N c H j C εΩ=Ω+Ω幅度平方函数:3、脉冲响应不变法原理 用数字滤波器的单位脉冲响应序列h(n)逼近模拟滤波器的冲激响应()a h t ,让h(n)正好等于()a h t 的采样值,即:()()a h n h nT =其中,T 为采样间隔。

如果以()a H s 和H(z)分别表示()a h t 的拉氏变换及h(n)的Z 变换,则:12ˆ()()sT a a z e k H z H s H s j k T T π∞==-∞⎛⎫==- ⎪⎝⎭∑4、双线性变换法原理双线性变换法是通过两次映射采用非线性频率压缩的方法,将整个频率轴上的频率范围压缩到±π/T 之间,再用sTz e =转换到z 平面上,从而使数字滤波器的频率响应与模拟滤波器的频率响应相似。

实验-3-无限冲激响应滤波器(IIR)算法实验

实验-3-无限冲激响应滤波器(IIR)算法实验

实验-3-无限冲激响应滤波器(IIR)算法实验介绍滤波器是数字信号处理非常重要的一个概念,用来去除信号中不需要的部分,保留信号中需要的部分。

在数字信号处理中,有两种类型的滤波器:有限冲激响应滤波器(FIR)和无限冲激响应滤波器(IIR)。

本次实验将使用IIR算法实现滤波器。

IIR滤波器是一种递归滤波器,输出序列由输入序列和输出序列的线性组合得到。

实验目标本次实验的主要目标是掌握IIR滤波器算法实现过程,熟悉IIR滤波器的基本结构和原理,并实现IIR滤波器的设计和效果验证。

实验步骤1.确定IIR滤波器的结构和参数。

IIR滤波器有多种不同的结构,包括直接I型IIR结构、直接II型IIR结构、级联结构和平行结构等。

本次实验将使用直接I型IIR结构,结构参数包括两个系数a和b。

2.计算IIR滤波器的系数a和b。

根据设计要求,计算得到IIR滤波器的系数a和b。

系数的选择会影响滤波器的性能,需要根据具体的应用场景进行选择。

3.编写IIR滤波器的代码。

使用计算得到的系数a和b实现IIR滤波器的代码,并测试代码的正确性。

4.测试IIR滤波器的效果。

使用已有的信号对IIR滤波器进行测试,观察滤波器的输出效果。

本次实验实现了IIR滤波器算法,并通过测试验证了滤波器的正确性和效果。

实验结果表明,IIR滤波器在实际应用中具有良好的滤波性能和可靠性,可以有效地对信号进行去噪和滤波处理。

参考文献1.刘嘉辰. 数字信号处理[M]. 清华大学出版社, 2014.2.Lyons R. Understanding digital signal processing[M]. PearsonEducation, 2016.3.Oppenheim A V,Schafer R W. Discrete-time signal processing[M].Prentice Hall, 1999.。

DSP无限冲击相应滤波器(IIR)算法实验

DSP无限冲击相应滤波器(IIR)算法实验

DSP实验报告院系:哈尔滨理工大学荣成校区专业:电子信息工程实验四无限冲击相应滤波器(IIR)算法实验一、实验目的1、熟悉设计IIR数字滤波器的原理与方法2、掌握数字滤波器的计算机仿真方法;3、通过观察对实际信号的滤波作用,获得对数字滤波的感性认识。

二、实验设备计算机,CCS 3.1版软件,实验箱,DSP仿真器,连接线。

三、实验原理1、无限冲击响数字滤波器的基础理论;2、模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);3、双线性变换的设计原理。

四、实验步骤1、复习有关巴特沃斯滤波器设计和用双线性变换法设计IIR数字滤波器的知识;2、阅读本实验所提供的样例子程序;3、运行CCS软件,对样例程序进行跟踪,分析结果;4、填写实验报告。

5、样例程序实验操作说明A.实验前准备①实验箱和CPU板设置:SW2的2、4置ON,1、3置OFF;S2全部置ON;JP3开关的3、6位置ON,其余置off,S23全部置OFF。

②用导线连接“信号源”2号孔“信号源1”和“A/D单元”2号孔“ADIN1”;B.实验启动CCS 3.1,打开工程文件exp03_iir。

在程序中m=0处设置断点,运行打开一个图形观察窗口;设置双综观察在起始地址x、y,数值变化为256,32位浮点型变量。

五、实验结果及代码实验代码#define UCHAR unsigned char#define UINT16 unsigned int#define UINT32 unsigned long#define TRUE 1#define FALSE 0//---------------------------------------------------------//----------------定义寄存器地址--------------#define IODIR_ADDR 0x3400#define IODATA_ADDR 0x3401//---------------定义寄存器操作--------------#define IODIR *(ioport unsigned int *)IODIR_ADDR#define IODATA *(ioport unsigned int *)IODATA_ADDR#define IER0 (*(volatile unsigned int*)0x0000) //Interrupt Enable Register 0 #define IFR0 (*(volatile unsigned int*)0x0001) //Interrupt Flag Register 0 #define IER1 (*(volatile unsigned int*)0x0045) //Interrupt Enable Register 1 #define IFR1 (*(volatile unsigned int*)0x0046) //Interrupt Flag Register 1#define AD_Addr 0x20008#define AD_in (*(unsigned int *)AD_Addr) //AD输入//----------------------------------------------------------/* 全局变量定义*///---------------------------------------------------------#define Len 256#define FLen 51#define pi 3.1415927//-----------------------------------------------------------void int2ReadData();interrupt void int1_isr();void biir2lpdes(double fs, double nlpass, double nlstop, double a[], double b[]);//-----------------------------------------------------------double fs,nlpass,nlstop,nhpass,nhstop,a[3],b[3],x[Len],y[Len];int in_x[Len];int m = 0;int intnum = 0;double xmean=0;int n=0;int i,j,p,k=0;double w2,w1,w0;//--------------------------------------------------------------------// 函数名称:void biir2lpdes(double fs, double nlpass, double nlstop, double a[], double b[])// 函数说明:// 输入参数:// 输出参数: 无//--------------------------------------------------------------------void biir2lpdes(double fs, double nlpass, double nlstop, double a[], double b[]) {int i,u,v;double wp,omp,gsa,t;wp=nlpass*2*pi;omp=tan(wp/2.0);gsa=omp*omp;for (i=0; i<=2; i++){u=i%2;v=i-1;a[i]=gsa*pow(2,u)-sqrt(2)*omp*v+pow(-2,u);}for (i=0; i<=2; i++){ u=i%2;b[i]=gsa*pow(2,u);}t=a[0];for (i=0; i<=2; i++){ a[i]=a[i]/t;b[i]=b[i]/t;}}//************************************************************** void main(){//--------初始化参数---------------------------------------w2=w1=w0=0.0;fs = 250000;nlpass = 0.08;nlstop = 0.28;biir2lpdes(fs,nlpass,nlstop,a,b);Sys_Initial();IODIR|=0x0080; //设置IO口中GPIO7为输出IODATA|=0x0080; //设置GPIO7输出高电平IODIR|=0x0040; //设置IO口中GPIO6为输出IODATA&=0x00bf; //设置GPIO6输出低电平IODIR|=0x0010; //设置IO口中GPIO4为输出IODATA&=0x00ef; //设置GPIO4输出低电平IFR0 = IFR0;IFR1 = IFR1; //清除中断标志IER0 = 0;IER1 = 0; //禁止所有可屏蔽中断IER1|= 0x0001; //使能外部中断1asm( " bit(ST1,#11) = #0 "); //打开总中断//-----------等待AD7822中断--------------------------while(1){asm(" nop ");}}//********************************************** //- 函数名称: interrupt void int1_isr()//- 函数说明://- 输入参数: 无//- 输出参数: 无//- 补充说明://********************************************* interrupt void int1_isr(){in_x[m] = AD_in;in_x[m] &= 0x00FF;m++;intnum = m;if (intnum == Len){intnum = 0;xmean = 0.0;for (i=0; i<Len; i++){xmean = in_x[i] + xmean;}xmean = 1.0*xmean/Len;for (i=0; i<Len; i++){x[i] = 1.0*(in_x[i] - xmean);}for (i=0; i<Len; i++){w2 = x[i]-a[1]*w1-a[2]*w0;y[i] = b[0]*w2+b[1]*w1+b[2]*w0;w0 = w1;w1 = w2;}m=0; //在这里设置断点}}。

数字信号处理 实验 无限冲激响应(IIR)数字滤波器的三种结构

数字信号处理 实验 无限冲激响应(IIR)数字滤波器的三种结构

数字信号处理实验报告实验名称:无限冲激响应(IIR)数字滤波器的三种结构 学号: 姓名: 评语: 成绩: 一、 实验目的1、掌握IIR 滤波器的直接II 型、级联型和并联型三种结构的基本原理和特点。

2、掌握利用MATLAB 实现IIR 滤波器的三种结构的程序设计方法,并能够进行三者之间的相互转换。

3、掌握滤波器频响特性的绘制方法。

二、 实验原理与计算方法按照结构划分数字滤波器,有递归式和非递归式两种。

递归式数字滤波器的差分方程为∑∑==-=-+Mi i Nk ki n x b k n y an y 11)()()( (1)其中至少有一个0≠k a .非递归式数字滤波器的差分方程为 ∑=-=Mi i i n x b n y 1)()( (2)可以看出递归式数字滤波器的响应)(n y 不仅与激励)(n x 有关,而且与以前的输出信号)(k n y -有关;而非递归式数字滤波器的响应)(n y 仅只与激励)(n x 有关。

按照单位样值响应划分数字滤波器,则有无限冲激响应(IIR)和有限冲激响应(FIR)之分。

IIR 滤波器是递归式的,差分方程如(1)式所示,FIR 滤波器一般是非递归式的,差分方程如(2)式所示。

IIR 滤波器常用的典型结构有直接II 型、级联型和并联型,分别介绍如下: 1、直接II 型(也称为正准型结构) 根据(1)式,IIR 滤波器的传输函数为∑∑=-=--=Nk kk Nk kkz azb z H 101)( (3)其中已假设(1)式中的M N =,对于其它情况,则可令相应的某些系数为零。

令 11)(,)(1201∑∑=-=--==Nk kk Nk k k z az H z b z H则有 )()()(21z H z H z H = (4) 由此可以得到相应的时域中激励)(n x 与响应)(n y 之间的关系为∑∑==-=+-=Nk kNk kk n y bn y n x k n y an y 02122)()()()()( (5)其中)(2n y 是与(4)式中的)(2z H 相应的中间函数序列。

iir数字滤波器设计实验总结

iir数字滤波器设计实验总结

iir数字滤波器设计实验总结IIR数字滤波器设计实验总结一、设计目的IIR数字滤波器是数字信号处理中的一种常见滤波器。

本次实验的设计目的在于掌握IIR数字滤波器的设计方法,并掌握MATLAB软件工具在数字信号处理中的应用。

二、设计原理IIR数字滤波器是由反馈和前馈两个滤波器组成的结构,具有无限长冲激响应的特点。

其中反馈滤波器主要用于抑制高频信号,前馈滤波器则用于增益低频信号。

IIR数字滤波器通常使用差分方程表示,并通过z变换将其转化为传递函数形式。

三、设计步骤1. 选择滤波器类型和参数在实验中,我们主要采用了IIR低通滤波器的设计。

根据设计要求,选择滤波器的截止频率、通带增益和阻带衰减等参数。

2. 设计IIR滤波器传递函数根据选择的滤波器类型和参数,采用MATLAB软件中的fdatool工具箱进行设计,生成IIR滤波器的传递函数。

3. 实现数字滤波器将生成的传递函数导入到MATLAB软件中,进行编程实现,实现数字滤波器。

四、实验结果1. 对IIR数字滤波器进行功能验证采用MATLAB软件中的测试向量,对IIR数字滤波器进行功能验证。

比较输入信号和输出信号的波形和频谱图,验证滤波器的正确性。

2. 对IIR数字滤波器的性能进行测试采用不同波形和频率的信号,对IIR数字滤波器的性能进行测试。

比较滤波器输出信号和参考信号的波形和频谱图,评估滤波器的性能。

五、实验体会通过本次实验,我们学会了IIR数字滤波器的设计方法和MATLAB软件的应用技巧。

同时,我们也深刻理解了数字信号处理中常见的滤波器的工作原理和特点。

此外,实验还培养了我们的编程实践能力和信号处理思维能力。

六、总结IIR数字滤波器是数字信号处理中常用的滤波器,其设计方法和MATLAB软件的应用技巧都是数字信号处理领域中必备的知识点。

通过本次实验,我们深刻理解了滤波器的工作原理和特点,并在编程实践中掌握了数字信号处理的基本技能,收益颇丰。

实验五、无限冲激响应(IIR)数字滤波器的设计

实验五、无限冲激响应(IIR)数字滤波器的设计

实验四、无限冲激响应(IIR)数字滤波器的设计一、实验目的1、熟悉用双线性变换法设计IIR数字滤波器的原理与方法;掌握数字滤波器的计算机仿真方法。

2、掌握用Matlab软件设计流程。

二、实验设备微型计算机、Matlab7.0教学版三、实验原理数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。

数字滤波器有多种分类,根据数字滤波器冲击响应的时域特征,可以将数字滤波器分为两种,即无限长冲击响应滤波器(IIR)和有限长冲激响应滤波器(FIR)。

在MATLAB中,可以通过调用simulink中的功能模块,可以构成数字滤波器的仿真框图。

在仿真过程中,双击各个功能模块,随时改变参数,获得不同状态下的仿真结果。

四、实验内容(1)用fdatool设计一个IIR低通滤波器(具体参数不要求)(2)并用simulink 仿真(3)对滤波器输入一个含噪信号并能观察到滤波前后的波形(4)对结果进行分析。

五、实验结果1、Simulink仿真原理图2、Filter参数设置3、滤波效果Scope Scope1Scope2六、实验总结通过这次实验,我熟悉用双线性变换法设计IIR数字滤波器的原理与方法;掌握数字滤波器的计算机仿真方法。

熟悉和了解了simulink仿真的真个过程。

Simulink中各种非常有用的工具箱不仅对于设计IIR数字滤波器非常有用,而且对于整个型号仿真处理具有相当可视化的效果,从仿真的角度看,是达到了技术指标的要求。

Simulink是一个进行动态系统建模、仿真和综合分析的集成软件包。

它可以处理的系统包括:线性、非线性系统:离散、连续及混合系统;单任务、多任务离散时间系统。

iir滤波器设计实验报告

iir滤波器设计实验报告

iir滤波器设计实验报告IIR滤波器设计实验报告一、实验目的本实验旨在通过实际操作,掌握IIR滤波器的基本设计方法,了解滤波器性能参数对滤波效果的影响,加深对滤波器理论的理解。

二、实验原理IIR滤波器(Infinite Impulse Response)是一种离散时间滤波器,其系统函数具有无限长的时间响应。

IIR滤波器设计方法主要包括冲激响应不变法和双线性变换法。

本实验采用冲激响应不变法进行设计。

三、实验步骤1. 确定滤波器性能参数:根据实际需求,确定滤波器的类型(低通、高通、带通、带阻)、通带边缘频率、阻带边缘频率、通带波动和阻带衰减等性能参数。

2. 计算滤波器系数:根据冲激响应不变法,利用Matlab编程计算滤波器系数。

具体过程包括定义系统函数、计算冲激响应、计算频率响应等步骤。

3. 编写滤波器程序:根据计算出的滤波器系数,编写IIR滤波器程序。

程序应实现输入信号的滤波处理,并输出滤波后的信号。

4. 测试滤波器性能:对编写的滤波器程序进行测试,观察其滤波效果,分析性能参数对滤波效果的影响。

5. 优化滤波器性能:根据测试结果,对滤波器性能参数进行调整,优化滤波效果。

四、实验结果及分析通过本次实验,我们成功地设计并实现了IIR滤波器。

在测试过程中,我们观察到了滤波器对不同频率信号的过滤效果,并分析了性能参数对滤波效果的影响。

具体来说,通带边缘频率决定了滤波器对低频信号的过滤程度,阻带边缘频率则影响对高频信号的过滤程度。

通带波动和阻带衰减则分别反映了滤波器在通带和阻带的波动程度和衰减程度。

通过对这些性能参数的调整,我们可以实现对不同类型信号的有效过滤。

五、实验总结通过本次实验,我们深入理解了IIR滤波器的工作原理和设计方法,掌握了Matlab编程在滤波器设计中的应用。

实验过程中,我们不仅学会了如何根据实际需求选择合适的性能参数,还学会了如何调整这些参数以优化滤波效果。

此外,我们还观察到了不同性能参数对滤波效果的影响,加深了对滤波器理论的理解。

无限冲激响应滤波器(IIR)算法硬件实现DSP论文

无限冲激响应滤波器(IIR)算法硬件实现DSP论文

摘要20世纪60年代以来,随着大规模集成电路、数字计算机等信息技术的飞速发展,数字信号处理(Digital Signal Processing, DSP)技术应运而生并得到快速发展。

在过去的20多年时间里,DSP在理论和应用方面不断地进步和完善,在越来越多的应用领域中迅速取代传统的模拟信号处理方法,并开辟出出许多新的应用领域。

目前数字信号处理技术已经在通信、雷达、航空航天、工业控制、生物医学控制、生物医学工程、网络及家电领域得到极为广泛的应用,数字化时代正在到来。

1928年,美国德州仪器公司(Texas Instruments Incorporation,简称TI公司)推出该公司的第一款DSPs芯片,很快DSPs芯片就以其数字器件特有的稳定性、可重复性、可大规模集成和易于实现DSP算法等优点,为数字信号处理技术带来了更大的发展和应用前景。

采用各种类型DSPs实现系统的数字化处理和控制已经成为未来发展的趋势,并且睡着DSPs运算能力的不断提高,数字信号处理的研究重点由最初的非实用转向高速实时应用。

本文主要是应用TI公司生产的一款芯片TMS320F2812 DSPs来实现无限冲击响应滤波器(IIR)算法。

本文的主要工作可归结如下:1、介绍无限冲激响应滤波器(IIR)实现的原理。

2、详细分析无限冲激响应滤波器(IIR)算法。

3、画出无限冲激响应滤波器(IIR)实现的硬件框图及软件流程图。

4、实验调试过程及步骤。

5、分析在CCS软仿真及硬仿真环境下实验结果。

6、反汇编一个小程序及对DSPs实现IIR算法理解。

7、对学习DSPs理论课及做实验的心得体会。

通过软件仿真及硬件实现结果表明,用DSPs实现无限冲激响应滤波器(IIR)算法能够很好的达到预期的效果。

关键词:IIR, , DSPs, 无限冲激响应,CCS,滤波器引言硬件实现无限冲激响应滤波器(IIR)算法有多种方法,本文介绍用TI公司生产的一款芯片TMS320F2812 DSPs来实现无限冲激响应滤波器(IIR)算法,其中涉及无限冲激响应滤波器(IIR)算法软件仿真和硬件实现。

IIR数字滤波器的设计实验报告

IIR数字滤波器的设计实验报告

IIR数字滤波器的设计一、实验目的:掌握冲激相应不变法和双线性变换法设计IIR数字滤波器的原理和方法;观察冲激相应不变法和双线性变换法设计IIR数字滤波器的频率特性;了解冲激相应不变法和双线性变换法的特点和区别。

二、实验原理:无限长单位冲激响应(IIR)数字滤波器的设计思想:a)设计一个合适的模拟滤波器b)利用一定的变换方法将模拟滤波器转换成满足预定指标的数字滤波器切贝雪夫I型:通带中是等波纹的,阻带是单调的切贝雪夫II型:通带中是单调的,阻带是等波纹的1.用冲击响应不变法设计一个低通切贝雪夫I型数字滤波器通带上限截止频率为400Hz阻带截止频率为600Hz通带最大衰减为0.3分贝阻带最小衰减为60分贝抽样频率1000Hz2.用双线性变换法设计切贝雪夫II型高通滤波器通带截止频率2000Hz阻带截止频率1500Hz通带最大衰减0.3分贝阻带最小衰减50分贝抽样频率20000Hz四、实验程序:1)Wp=2*pi*400;Ws=2*pi*600;Rp=0.3;Rs=60;Fs=1000;[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs,'s'); [Z,P,K]=cheb1ap(N,Rp);[A,B,C,D]=zp2ss(Z,P,K);[At,Bt,Ct,Dt]=lp2lp(A,B,C,D,Wn); [num1,den1]=ss2tf(At,Bt,Ct,Dt);[num2,den2]=impinvar(num1,den1,Fs); [H,W1]=freqs(num1,den1);figure(1)subplot(2,1,1);semilogx(W1/pi/2,20*log10(abs(H)));grid; xlabel(' 频率/ Hz');ylabel(' 模拟滤波器幅值(db)');[H,W2]=freqz(num2,den2,512,'whole',Fs); subplot(2,1,2);plot(W2,20*log10(abs(H)));grid;xlabel(' 频率/ Hz');ylabel(' 数字滤波器幅值(db)'); [H,W]=freqz(num2,den2,512,'whole'); figure(2)subplot(2,1,1);8plot(W/2/pi,20*log10(abs(H)));grid; xlabel(' 数字角频率/ pi');ylabel(' 数字滤波器幅值(db)'); %xlabel(' 频率/ Hz'); %ylabel(' 幅值'); subplot(2,1,2);%stem(W/pi,abs(H));grid;%figure(3)%semilogx(W1,W2);%grid;plot(W/2/pi,angle(H)/pi);grid;xlabel(' 数字角频率/ pi');ylabel(' 相角/ pi');2)Wp=2*pi*2000;Ws=2*pi*1500;Rp=0.3;Rs=50;Fs=20000;[N,Wn]=cheb2ord(Wp,Ws,Rp,Rs,'s'); [Z,P,K]=cheb2ap(N,Rs);[A,B,C,D]=zp2ss(Z,P,K);[At,Bt,Ct,Dt]=lp2hp(A,B,C,D,Wn); [num1,den1]=ss2tf(At,Bt,Ct,Dt); [num2,den2]=bilinear(num1,den1,Fs); [H,W]=freqz(num2,den2);subplot(2,1,1);plot(W*Fs/2/pi,20*log10(abs(H)));grid; xlabel(' 数字角频率/ Hz');ylabel(' 幅值(dby)');subplot(2,1,2);plot(W*Fs/2/pi,angle(H)/pi);grid; xlabel(' 数字角频率/ Hz');ylabel(' 相角/ pi');五、仿真图形:六、实验分析:1.在第一个实验中模拟滤波器的频率响应曲线延伸无穷,而数字滤波器只给出500Hz一下的频谱是什么原因?答:模拟滤波器的频率响应从负无穷至正无穷,经过采样后,变到(0,2π)。

实验七 IIR滤波器

实验七  IIR滤波器

CENTRAL SOUTH UNIVERSITY数字信号处理实验报告题目IIR滤波器学生姓名钱学文学院物理与电子学院专业班级电信息科学与技术1004班实验七 IIR 滤波器一、实验仪器:PC 机一台,JQ-NIOS-2C35实验箱一台及辅助软件(DSP Builder 、Matlab/Simulink 、Quartus II 、Modelsim )二、实验目的:1、初步了解JQ-NIOS-2C35实验箱的基本结构。

2、学习和熟悉基于DSP Builder 开发数字信号处理实验的流程。

3、理解IIR 滤波器设计的原理和方法。

三、实验原理:IIR (Infinite Impulse Response )滤波器,即无限冲击响应滤波器,其冲击响应是无限长的。

IIR 滤波器一般采用递归式方法来实现]。

也就是说,滤波器当前输出y(n)是输入序列x(n)和以前各输出值y(n -1) 、y(n -2) …的函数,这可以用下列差分方程来表示:)()()(1i n y a i n x b n y Ni i M i i -+-=∑∑==(4-1)其中N M ≤,N 是IIR 滤波器的阶数。

相应地,IIR 滤波器的系统函数可以表示为:∑∑=-=--=N i ii Mi ii z a zb z 101)(H (4-2)IIR 滤波器除了具有极点之外,一般还存在零点。

由于极点的存在,IIR 滤波器用递归结构来实现较为简单。

实现IIR 滤波器的基本结构共有三种:直接型、级联型和并联型。

下面简单介绍前两种IIR 滤波器的结构。

1、直接型利用公式(4-2)可以直接导出I 型的IIR 滤波器结构,可用下式表示:00()1Mii i Nii i H z b za z-=-==-∑∑ (4-3)由此可得,∑=-Mi i i z b 0和反馈环节∑=--N1i i a 11iz 中的延时单元不能共用,需要M+N 个延时单元1-z 。

为了减少延时单元,对于线性系统,公式(4-3)也可以写成:∑∑=-=-⋅-=Mi i i Ni ii z b z a z H 0111)( (4-4)由此可以导出直接II 型的滤波器结构。

实验三 无限冲激响应滤波器(IIR)算法实验

实验三  无限冲激响应滤波器(IIR)算法实验

实验三无限冲激响应滤波器(IIR)算法实验一.实验目的1.掌握设计IIR 数字滤波器的原理和方法。

2.熟悉IIR 数字滤波器特性。

3.了解IIR 数字滤波器的设计方法。

二.实验设备PC 兼容机一台操作系统为Windows2000(或Windows98,WindowsXP,以下默认为Windows2000)安装Code Composer Studio 3.1 软件三.实验原理1.无限冲激响应数字滤波器的基础理论。

2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。

3.数字滤波器系数的确定方法。

4.根据要求设计低通IIR 滤波器:要求:低通巴特沃斯滤波器在其通带边缘1kHz 处的增益为-3dB,12kHz 处的阻带衰30dB,采样频率25kHz。

设计:- 确定待求通带边缘频率fp1Hz、待求阻带边缘频率fs1Hz 和待求阻带衰减-20logδsdB。

模拟边缘频率为:fp1=1000Hz,fs1=12000Hz阻带边缘衰减为:-20logδs=30dB-用Ω=2πf/fs 把由Hz 表示的待求边缘频率转换成弧度表示的数字频率,得到Ωp1 和Ωs1。

Ωp1=2πfp1/fs=2π1000/25000=0.08π弧度Ωs1=2πfs1/fs=2π12000/25000=0.96π弧度- 计算预扭曲模拟频率以避免双线性变换带来的失真。

由w=2fs tan(Ω/2)求得wp1 和ws1,单位为弧度/秒。

wp1=2fs tan(Ωp1/2)=6316.5 弧度/秒ws1=2fs tan(Ωs1/2)=794727.2 弧度/秒- 由已给定的阻带衰减-20logδs 确定阻带边缘增益δs。

因为-20logδs=30,所以logδs=-30/20,δs=0.03162- 计算所需滤波器的阶数:因此,一阶巴特沃斯滤波器就足以满足要求。

- 一阶模拟巴特沃斯滤波器的传输函数为:H(s)=wp1/(s+wp1)=6316.5/(s+6316.5) 由双线性变换定义s=2fs(z-1)/(z+1)得到数字滤波器的传输函数为:因此,差分方程为:y[n]=0.7757y[n-1]+0.1122x[n]+0.1122x[n-1]。

无限冲激响应(IIR)数字滤波器的设计实验报告

无限冲激响应(IIR)数字滤波器的设计实验报告

数字信号处理实验报告姓名:寇新颖 学号:20100304026 专业:电子信息科学与技术实验四 无限冲激响应(IIR)数字滤波器的设计一、实验目的1.掌握双线性变换法及冲激响应不变法设计IIR 数字滤波器的具体设计方法及其原理,熟悉用双线性变换法及冲激响应不变法设计低通IIR 数字滤波器的计算机编程。

2.观察双线性变换及冲激响应不变法设计的滤波器的频域特性,了解双线性变换法及冲激响应不变法的特点。

3.熟悉Butterworth 滤波器的频率特性。

二、实验原理1.利用模拟滤波器设计IIR 数字滤波器方法(1)根据所给出的数字滤波器性能指标计算出相应的模拟滤波器的设计指标。

(2)根据得出的滤波器性能指标设计出相应的模拟滤波器的系统函数H(S)。

(3)根据得出的模拟滤波器的系统函数H(S),经某种变换得到对该模拟滤波器相应的数字仿真系统——数字滤波器。

将模拟滤波器转换成数字滤波器的实质是,用一种从s 平面到z 平面的映射函数将Ha(s)转换成H(z)。

对这种映射函数的要求是:(1) 因果稳定的模拟滤波器转换成数字滤波器,仍是因果稳定的。

(2)数字滤波器的频率响应模仿模拟滤波器的频响,s 平面的虚轴映射z 平面的单位圆,相应的频率之间成线性关系。

冲激响应不变法和双线性变换法都满足如上要求。

2.冲激响应不变法用数字滤波器的单位脉冲响应序列h(n)模仿模拟滤波器的冲激响应h a (t),让h(n)正好等于h a (t)的采样值,即h(n)=h a (nT),其中T 为采样间隔。

3.双线性变换法s 平面与z 平面之间满足以下映射关系:1111--+-=z z s s 平面的虚轴单值地映射于z 平面的单位圆上,s 平面的左半平面完全映射到z 平面的单位圆内。

双线性变换不存在混叠问题。

双线性变换时一种非线性变换)2/(ωtg =Ω,这种非线性引起的幅频特性畸变可通过预畸而得到校正。

以低通数字滤波器为例,将设计步骤归纳如下:(1)确定数字滤波器的性能指标:通带临界频率f p 、阻带临界频率f s ;通带内的最大衰减A p ;阻带内的最小衰减A s ;(2)确定相应的数字角频率,ωp =2πf p ;ωs =2πf s ;(3)计算经过预畸的相应模拟低通原型的频率,)2/(ωtg =Ω;(4)根据Ωp 和Ωs 计算模拟低通原型滤波器的阶数N ,并求得低通原型的传递函数H a (s);(5)用上面的双线性变换公式代入H a (s),求出所设计的传递函数H(z);(6)分析滤波器特性,检查其指标是否满足要求。

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

实验无限冲激响应滤波器
I I R算法实验
The final edition was revised on December 14th, 2020.
实验 3 :无限冲激响应滤波器(IIR)算法实验
一、实验目的
1. 熟悉IIR 数字滤波器特性;
2.掌握IIR数字滤波器的设计过程;
3.掌握 IIR 数字滤波器性能测试方法。

二、实验设备
兼容机
操作系统
Composer Studio v5
三、实验内容
1.掌握IIR数字滤波器的基础理论;
2.基于MATLAB的IIR数字滤波器参数确定方法;
3.采用C语言编程实现低通IIR 滤波器;
4.掌握基于CCS的波形观察方法;观察滤波前后的波形变化。

四.实验原理分析
要求:使用低通巴特沃斯滤波器,设计通带截止频率f p为1kHz、增益为-3dB,阻带截止频率f st为12kHz、衰减为30dB,采样频率f s为25kHz。

设计:
通带截止频率为: f p = 1000Hz, f st = 12000Hz
(一)、滤波器参数计算
模拟预畸变通带截止频率为: w p = 2f s tan(2πf p/(2f s)) = 弧度/秒
模拟预畸变阻带截止频率为:w st = 2f s tan(2πf st/(2f s)) = 弧度/秒
N = ,则:一阶巴特沃斯滤波器就足以满足要求。

一阶模拟巴特沃斯滤波器的传输函数为: H(s)=w
p /(s+w
p
)=(s+
由双线性变换定义 s=2f
s
(z-1)/(z+1)得到数字滤波器的传输函数为:因此,差分方程为: y[n]=[n-1]+[n]+[n-1]。

(二)、基于MATLAB的滤波器参数求解
(1)IIR数字滤波器阶次的选择的MATLAB函数
[N,w
c ] = buttord(w
p
,w
st
,Rp,As);
[N,w
c ] = cheb1ord(w
p
,w
st
,Rp,As);
[N,w
c ] = cheb2ord(w
p
,w
st
,Rp,As);
[N,w
c ] = ellipord(w
p
,w
st
,Rp,As);
对低通滤波器,必须有w
p < w
st
对高通滤波器,必须有w
p > w
st
对带通滤波器,必须有 w
s1 < w
p1
< w
p2
< w
s2
对带阻滤波器,必须有 w
p1 < w
s1
< w
s2
< w
p2
(2) IIR数字滤波器的设计
[b,a] = butter(N,wc,’ftype’)
[b,a] = cheby1(N,wc,’ftype’) [b,a] = cheby2(N,wc,’ftype’)
[b,a] = ellip(N,wc,’ftype’)
(三)、基于C语言编程的IIR 数字滤波器编程实现
程序流程图
五.实验步骤
1.打开 CCS,进入 CCS 的操作环境。

2.打开工程,浏览程序:工程目录为C:\ICETEK\ICETEK-DM6437-A\Lab0402_IIR
3.点击图标,CCS 会自动编译、链接和下载程序。

4.运行程序。

可以观察收到的数据。

*选择菜单 Tools->Graph->Dual Time,进行如下设置:
Dual Time 参数设置
*选择菜单 Tools->Graph->FFT Magnitude,新建 2 个观察窗口,分别进行如下设置:
5.设置断点:在有注释“break point”的语句设置软件断点。

使用菜单的 View-
>Break points,打开断点观察窗口,在刚才设置的断点上右键->Breadk point
properties 调出断点的属性设置界面,设置 Action 为 Refresh All windows。

则程序每次运行到断点,所有的观察窗口值都会被刷新。

其中,输入波形:一个低频正弦波与一个高频正弦波的叠加;输出波形:经过低通滤波后的低频正弦波。

6.运行并观察结果:
⑴ F8 键运行程序。

⑵ 观察“IIR”窗口中时域图形;观察滤波效果。

7.退出 CCS
六.实验结果
输入波形为一个低频率的正弦波与一个高频的余弦波叠加而成。

如图:
通过观察频域和时域图,得知:输入波形中的低频波形通过了滤波器,而高频部分则被衰减。

六.问题与思考
基本任务:
1.试微调(±改变程序中 f U的取值,观察步长因子μ在自适应算法中所起的作用。

2.确定程序中的信号频率,试选用设计不同的信号、噪声组合,基于MATLAB设计不同的类型的滤波器,并基于CCS实现,并观察实验的结果。

3.分析实验程序,细化算法流程图。

4.结合CCS的使用,分析实验结果
提高任务:
5.尝试使用信号源生成组合信号,经过A/D采样后,送IIR滤波器实现。

源代码:
#include""
#define IIRNUMBER 2 /*典范性的滤波器阶数*/
#define SIGNAL1F 1000 /*正弦信号频率,代码中没有使用*/
#define SIGNAL2F 4500 /*正弦信号频率,代码中没有使用*/
#define SAMPLEF 10000 /*采样频率,代码中没有使用*/
#define PI
float InputWave(); /*输入给IIR滤波器的信号,每次输出一个点*/
float IIR(); /*IIR滤波,每次输出一个点*/
/*滤波器的设计采用了案例的结果,应该重新设计*/
float fBn[IIRNUMBER]={ , }; /*IIR滤波器的分子多项式系数,有错*/
float fAn[IIRNUMBER]={ , }; /*IIR滤波器的分母多项式系数*/
float fXn[IIRNUMBER]={ }; /*IIR滤波器的迭代初始值*/
float fYn[IIRNUMBER]={ }; /*IIR滤波器的输出值*/
float fInput,fOutput; /*输入点和输出点*/
float fSignal1,fSignal2; /*信号1、2的初始相位*/ float fStepSignal1,fStepSignal2; /*信号1、2的相位步长*/
float f2PI;
int i;
float fIn[256],fOut[256];
int nIn,nOut;
main()
{
nIn=0; nOut=0;
f2PI=2*PI;
fSignal1=;
fSignal2=PI*;
// fStepSignal1=2*PI/30;
// fStepSignal2=2*PI*;
fStepSignal1=2*PI/50; /*信号1的相位步长:f1/fs = 1/50*/ fStepSignal2=2*PI/; /*信号2的相位步长:f1/fs = 1/*/
while ( 1 )
{
fInput=InputWave();
fIn[nIn]=fInput;
nIn++; nIn%=256;
fOutput=IIR();
fOut[nOut]=fOutput;
nOut++; /* 请在此句上设置软件断点 */
if ( nOut>=256 )
{
nOut=0;
}
}
}
float InputWave()
{
for ( i=IIRNUMBER-1;i>0;i-- )
{
fXn[i]=fXn[i-1];
fYn[i]=fYn[i-1];
}
fXn[0]=sin(fSignal1)+cos(fSignal2)/;
fYn[0]=;
fSignal1+=fStepSignal1;
if ( fSignal1>=f2PI ) fSignal1-=f2PI;
fSignal2+=fStepSignal2;
if ( fSignal2>=f2PI ) fSignal2-=f2PI;
return(fXn[0]);
}
float IIR()
{
float fSum;
fSum=;
/* y[n]=[n-1]+[n]+[n-1] */
for ( i=0;i<IIRNUMBER;i++ )
{
fSum+=(fXn[i]*fAn[i]);
fSum+=(fYn[i]*fBn[i]);
}
return(fSum);
}。

相关文档
最新文档