数字信号处理实验讲义(233)
- 格式:doc
- 大小:4.15 MB
- 文档页数:20
plot(n/32,abs(F_32),'o');
set(gca,'xtick',[0,0.25,0.5,0.75,1]);
set(gca,'ytick',[0,2,4,6,8]);
grid on ;
xlabel('Normalized frequency');
ylabel('Magnitude');
hold off
要求:
(1)确定DFT 计算的各参数;
(2)进行理论值与计算值比较,分析各信号频谱分析的计算精度;(3)详细列出利用DFT 分析离散信号谱线的步骤;(4)写出实验原理。
思考题:
(1)既然可以直接计算DTFT ,为什么利用DFT 分析离散信号谱?
(2)若信号持续时间无限,且无解析表达式,如何利用DFT 分析其频谱?(3)在利用DFT 分析离散信号频谱时,会出现哪些误差?如何克服或减弱?(4)在利用DFT 分析离散信号频谱时,如何选择窗函数?
(5)补零和增加信号长度都可以提高频谱分辨率,两者有何本质区别?
实验四
离散系统分析
实验目的:
1、学习系统响应的MATLAB 求解方法。
2、深刻理解离散系统的系统函数零极点对系统频响的影响,可以根据零极点知识设计简单的滤波器。
实验原理:
离散LTI 系统可用系统函数的分子分母多项式形式,零极点-增益形式或状态空间形式来描述。
(1)系统函数的分子分母多项式形式
4 11 201628。
数字信号处理实验指导书淮北煤炭师范学院物理与电子信息学院电子技术实验室目录实验一数字信号处理系统结构和编程 (1)实验二用FFT作谱分析 (4)实验三IIR滤波器的设计 (10)实验四FIR滤波器的设计 (17)附录一 (24)附录二 (26)附录三 (31)实验一数字信号处理系统结构和编程一、实验目的1.学习C语言的编程;2.掌握在CCS环境下的C程序设计方法;3.学会使用C和汇编语言混合编程;4.熟悉用C语言开发DSP程序的流程。
二、实验设备计算机,仿真器,THRS-1实验箱三、实验步骤与内容1.连接好DSP开发系统,实验箱上电,运行CCS;2.按流程图编写C程序,实现所要求的功能;3.例程序操作说明。
启动CCS 2.0,用Project/Open打开“DSP54X-01”目录下的“DSP54X01.pjt”工程文件,双击“DSP54X01.pjt”及“Source”可查看各源程序;并加载“DSP54X01.out”;单击“Run”运行程序;可以观察到D8指示灯闪烁;用View/Graph/Time/Frequency打开一个图形观察窗口;设置该观察图形窗口变量及参数;观察变量为x,长度为500,数值类型为16位有符号整型变量;如下图所示,图中下半部分为观察图形窗口的设置,上半部分为观察的图形。
四、程序框图五、实验说明CCS包含C编译器,支持标准C以及C和汇编混合编程。
C编译器包括三个功能模块:语法分析、代码优化和代码产生,如下图所示。
其中,语法分析(Parser)完成C语法检查和分析;代码优化(Optimizer)对程序进行优化,以便提高效率;代码产生(Code Generator)将C程序转换成C54x的汇编源程序。
本实验通过一些对数组及数据指针的基本操作,让实验者能够对使用C语言在CCS环境下编程有一个一目了然的认识。
并使用汇编语句,以体会两者综合运用时的优越性。
实验源程序如下:#include <math.h>#define pi 3.1415926#define N 500void main(){ int i,j;int *p;int x[500];for(i=0;i<N;i++)x[i]=0; for(i=0;i<N;i++){ x[i]=(int)100*sin(2*pi*i/250);}p=(int *)0x100;for(i=0;i<N;i++){ *p=x[i];p++ ;}for(;;){ asm(" rsbx xf");for(i=0;i<30000;i++)for(j=0;j<10;j++){ asm(" nop");asm(" nop");}asm(" ssbx xf");for(i=0;i<30000;i++)for(j=0;j<10;j++){asm(" nop");asm(" nop");}}}实验二用FFT作谱分析一、实验目的1.加深对DFT算法原理和基本性质的理解;2.熟悉FFT算法原理和FFT子程序的应用;3.学习用FFT对连续信号和时域信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。
数字信号处理实验指导书(2009版)宋宇飞编南京工程学院目录实验一信号、系统及系统响应 (1)一、实验目的 (1)二、实验原理与方法 (1)三、实验内容及步骤 (4)四、实验思考 (4)五、参考程序 (4)实验二离散时间傅里叶变换DTFT及IDTFT (9)一、实验目的 (9)二、实验原理与方法 (9)三、实验内容及步骤 (9)四、实验思考 (10)五、参考程序 (10)实验三离散傅里叶变换DFT及IDFT (12)一、实验目的 (12)二、实验原理与方法 (13)三、实验内容及步骤 (14)四、实验思考 (14)五、参考程序 (14)实验四用FFT做频谱分析 (17)一、实验目的 (17)二、实验原理与方法 (17)三、实验内容及步骤 (19)四、实验思考 (20)五、参考程序 (21)实验五用双线性变换法设计IIR数字滤波器 (25)一、实验目的 (25)二、实验原理与方法 (25)三、实验内容及步骤 (27)四、实验思考 (27)五、参考程序 (27)实验六用窗函数法设计FIR数字滤波器 (29)一、实验目的 (29)二、实验原理与方法 (29)三、实验内容及步骤 (33)四、实验思考 (34)五、参考程序 (34)附录一滤波器设计示例 (38)一、Matlab设计IIR基本示例 (38)二、Matlab设计IIR高级示例 (42)附录二部分习题参考答案 (50)习题一(离散信号与系统) (50)习题二(离散傅里叶变换及其快速算法) (51)习题三(IIR滤波器设计) (53)习题四(FIR滤波器) (54)习题五(数字信号处理系统的实现) (56)附录三相关MATLAB习题及答案 (57)第1章离散时间信号与系统 (57)第2章离散傅里叶变换及其快速算法 (60)第3章无限长单位脉冲响应(IIR)滤波器的设计方法 (63)第4章有限长单位脉冲响应(FIR)滤波器的设计方法 (67)第5章数字信号处理系统的实现 (69)第6章多采样率信号处理 (73)实验一 信号、系统及系统响应一、实验目的1、掌握时域离散信号的表示及产生方法;2、掌握时域离散信号简单的基本运算方法;3、掌握离散系统的响应特点。
数字信号处理实验讲义实验一序列、频谱、卷积一、实验目的1.掌握序列的输入方法;2.熟悉不同序列的特征;3.了解确定性信号谱分析的方法;4.验证卷积的计算过程;二、实验要求1.利用matlab程序,生成几种常用的序列,如矩形序列,单位脉冲序列;2.绘制图形,观察序列特征;3.研究其频率特性,绘制图形,观察频率响应特征;4.利用matlab程序,验证卷积的过程;三、实验步骤1.矩形序列(1)生成长度为N的矩形序列,观察并记录生成的图形;n=1:50x=sign(sign(10-n)+1);close all;subplot(3,1,1);stem(x);title('单位矩形信号序列');(2)研究其频率特性,()∑∞-∞=-=n nj Nj en R e H ωω)(,分别研究其幅频特性和相频特性,观察并记录生成的图形;k=-25:25;X=x*(exp(-j*pi/25)).^(n'*k); magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title('单位矩形信号的幅度谱'); angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(angX) ; title ('单位矩形信号的相位谱')2.单位脉冲序列(1)生成单位脉冲序列,观察并记录生成的图形;n=1:50; %定义序列的长度是50x=zeros(1,50); %注意:MATLAB中数组下标从1开始x(1)=1;close all;subplot(3,1,1);stem(x);title('单位冲击信号序列');(2) 研究其频率特性,()∑∞-∞=-=n nj j en x e H ωω)(,分别研究其幅频特性和相频特性,观察并记录生成的图形;k=-25:25;X=x*(exp(-j*pi/12.5)).^(n'*k); magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title('单位冲击信号的幅度谱'); angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(angX) ; title ('单位冲击信号的相位谱')3.卷积过程∑∞-∞=-= =mmnhmxnhnxny)()()(*)()(,n=1:50; %定义序列的长度是50hb=zeros(1,50); %注意:MATLAB中数组下标从1开始hb(1)=1;hb(2)=2.5;hb(3)=2.5;hb(4)=1;close all;subplot(3,1,1);stem(hb);title('系统hb[n]');m=1:50; %定义序列的长度是50A=444.128; %设置信号有关的参数a=50*sqrt(2.0)*pi;T=0.001; %采样率w0=50*sqrt(2.0)*pi;x=A*exp(-a*m*T).*sin(w0*m*T);subplot(3,1,2);stem(x);title('输入信号x[n]');y=conv(x,hb);subplot(3,1,3);stem(y);title('输出信号y[n]');四、实验报告要求1.写出生成对应序列的matlab程序,并分析;2.记录生成的图形;3.描述对应的序列和频率特性的特征;4.验证卷积计算结果;五、思考:1.如何生成实指数序列?写出对应的matlab程序a1=2n=1:50x1=(a1.^n)subplot(1,1,1)stem(x1);title('实指数序列')2.编写程序验证卷积定律。
前言数字信号处理的理论和技术一出现就受到人们的极大关注,发展非常迅速。
20世纪60年代以来,随着信息科学和计算技术的迅速发展,数字信号处理的理论与应用飞跃发展,它的重要性日益在通信、信息技术、图像处理、遥感、声呐、雷达、生物医学、地震、语音处理等领域的应用中表现出来,并发展成为一门极其重要的学科。
数字信号处理是一门理论与实践紧密联系的课程,适当的上机实验有助于深入理解和巩固难基本理论知识,锻炼初学者用计算机和MATLAB语言及其工具箱函数解决数字处理算法的仿真和滤波器设计问题的能力。
由于信号处理涉及大量的运算,可以说离开了计算机及相应的软件,就不可能解决任何稍微复杂的实际应用问题。
Matlab是1984年美国MathWorks公司的产品,MATLAB语言具备高效、可视化及推理能力强等特点,它的推出得到了各个领域专家学者的广泛关注,其强大的扩展功能为各个领域的应用提供了基础,是目前工程界流行最广的科学计算语言。
早在20世纪90年代中期,MATLAB 就己成为国际公认的信号处理的标准软件和开发平台。
从1996年后,美国新出版的信号处理教材就没有一本是不用MATLAB的。
本学期实验结合数字信号处理的基本理论和基本内容,设计了五个上机实验,每个实验对应一至两个主题内容。
包括常见离散信号的MATLAB产生和图形显示、离散时间信号的Z变换、快速傅立叶变换FFT及其应用、数字滤波器的MATLAB实现、用窗函数法设计FIR数字滤波器。
通过实验,使学生巩固所学基本理论,掌握最基本的数字信号处理的理论和方法,提高综合运用所学知识,提高计算机编程的能力。
进一步加强学生独立分析问题、解决问题的能力、综合设计及创新能力的培养,同时注意培养学生实事求是、严肃认真的科学作风和良好的实验习惯,为今后的工作打下良好的基础。
数字信号处理实验指导书针对每个实验介绍了MATLAB语言数字信号处理工具箱中的相应函数,举例并附有相应的程序。
实验一 连续时间信号的时域取样与重建实验目的:1、 掌握连续时间信号的离散化过程,深刻理解时域取样定理;2、 掌握由取样序列恢复原连续信号的基本原理与实现方法。
实验原理:取样解决的是把连续信号变成适于计算机处理的离散信号的问题。
取样就是从连续信号)(t f 中取得一系列的离散样点值。
1、理想取样设待取样信号为)(t x ,理想取样表示成:)()()(t t x t x T s δ= 其中 ∑-=nT nT t t )()(δδT 为取样周期(间隔),T x s /1=为取样频率,T s /2πω=为取样角频率。
由傅里叶变换频域卷积定理,得取样信号的频谱)(ωj X s :∑-=ns s n j X T j X ))((1)(ωωω 取样定理给出了取样信号包含原连续信号的全部信息的最大取样间隔。
时域取样定理的内容是:若带限信号)(t f 的最高角频率为m ω,其频谱函数在m ωω>||各处为零;对该信号以m f T 21≤的取样间隔(即取样频率为m s f f 2≥)进行等间隔取样时,则信号)(t f 可以由取样点值唯一地恢复。
其中πω2)(m m HZ f =。
在实际取样时,关键是确定信号的最高频率。
如果信号频率很宽或无限宽,无法满足取样定理,会引起频谱混叠误差,可以通过提高取样率减少误差。
例:对信号)*2*20cos()*2*10cos()(t t t x ππ+=进行取样。
解:信号最高频率为20HZ 取样频率为80HZ Fs=80;%sampling frequencyT=0:1/Fs:1;%one second worth of samples xn=cos(2*pi*10*t)+cos(2*pi*20*t);2、信号的重建当以满足取样定理的速率对信号)(t x 取样后,由取样信号)(t x s 恢复原信号)(t x 的过程称为重建。
用一个截止频率为2s c ωω=的理想低通滤波器对)(t x s 进行滤波,就能从)(t x s 中将原信号)(t x 恢复。
实验一 常见离散信号产生和实现一、实验目的1.加深对常用离散信号的理解;2.掌握matlab 中一些基本函数的建立方法。
二、实验原理1.单位抽样序列如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:2.单位阶跃序列3.正弦序列)/2sin()(ϕπ+=Fs fn A n x在MATLAB 中,n=0:N-1;x=A*sin(2*pi*f 0*n/fs+phi)4.复指数序列n j e r n x ϖ⋅=)(在MATLAB 中,n=0:N-1;x=r*exp(j*w*n)5.指数序列n a n x =)(在MATLAB 中,n=0:N-1;x=a.^n三、实验内容实现和图形生成1.五种基本函数的生成程序如下:(1)单位抽样序列方法一:% 单位抽样序列和延时的单位抽样序列n=0:10; x1=[1 zeros(1,10)];x2=[zeros(1,5) 1 zeros(1,5)];subplot(1,2,1);stem(n,x1,'.');xlabel ('时间序列n');ylabel('振幅');title('单位抽样序列x1');grid on;subplot(1,2,2);stem(n,x2,'.'); xlabel('时间序列n');ylabel('振幅');title('延时了5的单位抽样序列'); grid on;方法二:先在matlab中定义单位抽样序列:function [x,n]=impseq(n1,n2,n0)n=[n1:n2];x=[(n-n0)==0]; /n等于n0时1在运行命令:[x,n]=impseq(-5,5,3)stem(n,x,'.');xlabel('n');title('单位抽样序列x');grid(2)单位阶跃序列方法一:n=-4:6;u=[zeros(1,4) ones(1,7)];stem(n,u,'.');xlabel ('时间序列n');ylabel('振幅');title('单位阶跃序列');grid 所得的图形如下所示:方法二;先在matlab中定义单位阶跃序列:function [x,n]=stepseq(n1,n2,n0)n=[n1:n2];x=[(n-n0)>=0];在运行命令:[x,n]=stepseq(-5,5,3)stem(n,x,'.');xlabel('n');title('单位阶跃序列x');grid(3)正弦函数n=-5:20;x=2*sin(pi*n/6+pi/3); stem(n,x,'.'); xlabel ('时间序列n'); ylabel('振幅'); title('正弦函数序列x=2*sin(pi*n/6+pi/3)');grid on(4)复指数序列n=-5:30;x=2*exp(j*3*n);stem(n,real(x),'.'); xlabel ('时间序列n');ylabel('振幅');title('复指数序列x=2*exp(j*3*n)的实部');grid on图形如下:(5)指数序列n=1:30;x=1.2.^n;stem(n,x,'.'); xlabel ('时间序列n');ylabel('振幅');title('指数序列x=1.2.^n'); grid on2、绘出信号sn e n x =)(,当6121πj s +-=、6121πj s +=、121=s 、62πj s +=、6πj s =时的信号实部和虚部图;程序如下:s1=-1/12+j*pi/6;s2=1/12+j*pi/6;s3=1/12;s4=2+j*pi/6;s5=j*pi/6;n=0:20;x1=exp(s1*n);x2=exp(s2*n); x3=exp(s3*n);x4=exp(s4*n); x5=exp(s5*n);subplot(5,2,1);stem(n,real(x1),'.'); xlabel ('时间序列n');ylabel('实部'); title('复指数s1=-1/12+j*pi/6时序列实部');grid onsubplot(5,2,2);stem(n,imag(x1),'.'); xlabel ('时间序列n');ylabel('虚部'); title('复指数s1=-1/12+j*pi/6时序列虚部');grid onsubplot(5,2,3);stem(n,real(x2),'.'); xlabel ('时间序列n');ylabel('实部'); title('复指数s2=1/12+j*pi/6时序列实部');grid onsubplot(5,2,4);stem(n,imag(x2),'.'); xlabel ('时间序列n');ylabel('虚部'); title('复指数s2=1/12+j*pi/6时序列虚部');grid onsubplot(5,2,5);stem(n,real(x3),'.'); xlabel ('时间序列n');ylabel('实部');title('复指数s3=1/12时序列实部');grid onsubplot(5,2,6);stem(n,imag(x3),'.'); xlabel ('时间序列n');ylabel('虚部');title('复指数s3=1/12时序列虚部');grid onsubplot(5,2,7);stem(n,real(x4),'.'); xlabel ('时间序列n');ylabel('实部');title('复指数s4=2+j*pi/6时序列实部');grid onsubplot(5,2,8);stem(n,imag(x4),'.'); xlabel ('时间序列n');ylabel('虚部');title('复指数s4=2+j*pi/6时序列虚部');grid onsubplot(5,2,9);stem(n,real(x5),'.'); xlabel ('时间序列n');ylabel('实部');title('复指数s5=j*pi/6时序列实部');grid onsubplot(5,2,10);stem(n,imag(x5),'.'); xlabel ('时间序列n');ylabel('虚部'); title('复指数s5=j*pi/6时序列虚部');grid on由图的实部部分可以看出,s=j*pi/6时,序列周期为12。
实验一 离散信号与系统S1 信号、系统及系统响应 1、实验目的(1)掌握几种基本典型数字信号在Matlab 中的实现。
(2)掌握序列的基本操作。
(3)熟悉时域离散系统的基本特征。
(4)利用卷积求线性时不变系统的输出序列。
2、实验器材PC 机;MATLAB 语言环境3、实验原理在数字信号处理中,所有的信号都是离散(时间)信号,数字信号是通过对模拟信号进行取样得到的。
图1-1是模拟信号数字化处理的简化框图。
模拟信号先转换成数字信号,经过一定的处理之后,再还原成模拟信号输出。
图1-1对模拟信号x(t)进行采样得到的信号为()t x a ^,其中:()()()t p t x t x a a =^;()()∑∞-∞=-=m nT t t p δ令:()()⎥⎦⎤⎢⎣⎡=Ω^^t x FT j X a a ;()()[]t x FT j X a a =Ω采样定理——采样与重构(1)对连续信号进行等间隔采用形成采样信号,采样信号的频谱是原连续信号的频谱以采样频率为周期进行周期延拓形成的,满足公式(1-1):()()s k a a jk j X T j X Ω-Ω=Ω∑∞-∞=1^(1-1)(2)设连续信号()t x a 为带限信号,其最高截止频率为c Ω,如果采样角频率c s Ω≥Ω2,那么让采样信号()t x a ^通过一个增益为T ,截止频率为2sΩ的理想低通滤波器,可以唯一的恢复出连续信号()t x a ,否则将发生频谱混叠,导致信号失真。
在线性时不变系统中,若系统的输入为x(n),系统的单位脉冲响应为h(n),则系统的输出为:∑∞-∞=-=*=m m n h m x n h n x n y )()()()()(;其对应的频域特性为:()()()jwjwjwe H e X e Y =。
为了在数字计算机上观察分析各种序列的频域特性,通常对()jwe X 在[]π2,0上进行M 点采样来观察分析。
对长度为N 的有限长序列x(n),有:()()∑-=-=10N n njw jwkk em x eX ,其中kM w k π2=,k=0,1,…,M-1通常M 应取大一些,以便观察谱的细节变化。
《数字信号处理》实验指导书目录实验一 FFT频谱分析及应用 (3)实验二 IIR数字滤波器的设计 (6)实验三 FIR数字滤波器的设计 (10)附录: MATLAB基本操作及常用命令 (14)实验一 FFT频谱分析及应用实验学时:2学时实验类型:验证实验要求:必修一、实验目的:1、学习MATLAB语言的编程和调试技巧;、2、通过实验加深对FFT的理解;3、熟悉应用FFT对典型信号进行频谱分析的方法。
二、实验内容使用MATLAB程序实现信号频域特性的分析。
涉及到离散傅立叶变换(DFT)、快速傅立叶变换(FFT)及信号频率分辨率等知识点。
三、实验原理与方法和手段在各种信号序列中,有限长序列占重要地位。
对有限长序列可以利用离散傅立叶变换(DFT)进行分析。
DFT不但可以很好的反映序列的频谱特性,而且易于用快速算法(FFT)在计算机上进行分析。
有限长序列的DFT是其z变换在单位圆上的等距离采样,或者说是序列傅立叶的等距离采样,因此可以用于序列的谱分析。
FFT是DFT的一种快速算法,它是对变换式进行一次次分解,使其成为若干小数据点的组合,从而减少运算量。
在MATLAB信号处理工具箱中的函数fft(x,n),可以用来实现序列的N点快速傅立叶变换。
经函数fft求得的序列一般是复序列,通常要求出其幅值和相位。
MATLAB 中提供了求复数的幅值和相位的函数:abs、angle,这些函数一般和fft同时使用。
四、实验组织运行要求1、学生在进行实验前必须进行充分的预习,熟悉实验内容;2、学生根据实验要求,读懂并理解相应的程序;3、学生严格遵守实验室的各项规章制度,注意人身和设备安全,配合和服从实验室人员管理;4、教师在学生实验过程中予以必要的辅导,独立完成实验;5、采用集中授课形式。
五、实验条件1、具有WINDOWS 98/2000/NT/XP 操作系统的计算机一台; 2.、MATLAB 编程软件。
六、实验步骤在“开始--程序”菜单中,找到MATLAB 程序,运行启动;进入MATLAB 后 ,在Command Window 中输入实验程序,并执行; 记录运行结果图形,作分析。
具体步骤如下:1、模拟信号)8cos(5)4sin(2)(t t t x ππ+=,以)1:0(01.0-==N n n t 进行采样,求: (1)N =40点FFT 的幅度频谱,从图中能否观察出信号的2个频谱分量? (2)提高采样点数,如N =128,再求该信号的幅度频谱,此时幅度频谱发生了什么变化?信号的2个模拟频率和数字频率各为多少?FFT 频谱分析结果与理论上是否一致?2、一个连续信号含三个频谱分量,经采样得以下序列:))215.0(2cos())15.0(2cos()15.02sin()(n df n df n n x +⨯++⨯+⨯=πππ(1)N =64,df 分别为161、1/64,观察其频谱;(2)N =64、128,df 为1/64,做128点得FFT ,其结果有何不同?3、被噪声污染得信号,比较难看出所包含得频率分量,如一个由50Hz 和120Hz 正弦信号构成的信号,受零均值随机噪声的干扰,数据采样率为1000Hz ,试用FFT 函数来分析其信号频率成分,要求:(1)画出时域波形;(2)分析信号功率谱密度。
注:在MATLAB 中,可用函数rand (1,N )产生均值为0,方差为1,长度为N 的高斯随机序列。
七、思考题FFT 对信号进行频谱分析时,信号的频率的分辨率与什么有关?能否给出其数学关系?八、实验报告要求1、报告中要给出实验的MATLAB 程序,并对每个语句给出注释,说明语句作用;2、简述实验目的和原理;3、按实验步骤附上实验信号序列和幅频特性曲线,分析所得到的图形,说明参数改变时对时域和频域的影响;4、总结实验中的主要结论;5、收获和建议。
九、参考程序程序1:N=40;n=0:N-1;t=0.01*n;x=2*sin(4*pi*t)+5*cos(8*pi*t);k=0:N/2;w=2*pi/N*k;X=fft(x,N);magX=abs(X(1:N/2+1));subplot(2,1,1);stem(n,x,'.');title('signal x(n)');subplot(2,1,2);plot(w/pi,magX);title('FFT N=40');xlabel('f (unit :pi)');ylabel('|X|');grid程序3:t=0:0.001:0.8;x=sin(2*pi*50*t)+cos(2*pi*120*t);y=x+1.5*randn(1,length(t));subplot(3,1,1);plot(t,x);subplot(3,1,2);plot(t,y);%title('press any key,continue...');%pause;Y=fft(y,512);P=Y.*conj(Y)/512;f=1000*(0:255)/512;subplot(3,1,3);plot(f,P(1:256));实验二 IIR 数字滤波器的设计实验学时:3学时 实验类型:综合 实验要求:必修知识点:IIR 数字滤波器,脉冲响应不变法,双线性变换法 一、实验目的1、掌握脉冲响应不变法和双线性变换法设计IIR 数字滤波器的原理和方法;2、观察双线性变换法和脉冲响应不变法设计的滤波器的频域特性,了解双线性变换法和脉冲响应不变法的特点和区别。
二、实验内容使用MATLAB 编写程序,实现IIR 数字滤波器的设计。
涉及脉冲响应不变法和双线性变换法设计IIR 数字滤波器的方法、不同设计方法得到的IIR 滤波器频域特性异同等知识点。
三、实验原理与方法和手段 1、脉冲响应不变法所谓脉冲响应不变法就是使数字滤波器的单位脉冲响应序列h(n)等于模拟滤波器的单位冲激响应和a h (t)的采样值,即:)()()(nt h t h n h a nT t a ===,其中,T 为采样周期。
在MATLAB 中,可用函数impinvar 实现从模拟滤波器到数字滤波器的脉冲响应不变映射,调用格式为:[b,a]=impinvar(c,d,fs) [b,a]=impinvar(c,d)其中,c 、d 分别为模拟滤波器的分子和分母多项式系数向量;fs 为采样频率(Hz ),缺省值fs=1Hz ;b 、a 分别为数字滤波器分子和分母多项式系数向量。
2、双线性变换法:由于s 平面和z 平面的单值双线性映射关系为s =11211z T z---+,其中T 为采样周期。
因此,若已知模拟滤波器的传递函数,将上式代入即可得到数字滤波器的系统函数H(z)。
在双线性变换中,模拟角频率和数字角频率的变换关系为:22wtgTΩ=可见,Ω和w之间的变换关系为非线性的。
在MATLAB中,可用函数bilinear实现从模拟滤波器到数字滤波器的双线性变换映射,调用格式为:[b,a]=bilinear(c,d,fs)3、设计步骤:(1)定技术指标转换为模拟低通原型设计性能指标。
(2)估计满足性能指标的模拟低通性能阶数和截止频率。
利用MATLAB中buttord、cheb1ord、cheb2ord、ellipord等函数,调用格式如:)'',,,,(],[sRsRpWsWpbuttordWnn=其中,Wp为带通边界频率,rad/s;Ws为阻带边界频率,rad/s;Rp为带通波动,dB;Rs为阻带衰减,dB;‘s’表示为模拟滤波器;函数返回值n为模拟滤波器的最小阶数;Wn为模拟滤波器的截止频率(-3dB频率),rad/s。
函数适用低通、高通、带通、带阻滤波器。
(3)设计模拟低通原型。
利用MATLAB中buttap、cheb1ap、cheb2ap、elliap等函数,调用格式如[z,p,k]=buttap(n)。
采用上述函数所得到原型滤波器的传递函数为零点、极点、增益表达式,需要和函数[c,d]=zp2tf(z,p,k)配合使用,以转化为多项式形式。
(4)由模拟低通原型经频率变换获得模拟低通、高通、带通或带阻滤波器。
利用MATLAB中lp2lp、lp2hp、lp2bp、lp2bs等函数,调用格式如[c1,d1]lp2lp(c,d,Wn)。
(5)利用脉冲响应不变法或双线性不变法,实现模拟滤波器到数字滤波器的映射。
【说明】MATLAB信号处理工具箱还提供了模拟滤波器设计的完全工具函数:butter、cheby1,cheby2、ellip、besself。
用户只需一次调用就可自动完成以上步骤中的3~4步,调用格式如:[c,d]=butter(n,Wn,’ftype’,‘s’),其中,’ftype’为滤波器类型:‘high ’表示高通滤波器,截止频率为Wn ; ‘stop ’表示带阻滤波器,Wn=[W1,W2] (W1<W2); ‘ftype ’缺省时表示为低通或带通滤波器。
4、本实验用到的特殊函数:[db,mag,pha,w]=freqz_m(b,a),计算幅频和相频响应。
四、实验组织运行要求1、学生在进行实验前必须进行充分的预习,熟悉实验内容;2、学生根据实验要求,编写相应的程序;3、学生严格遵守实验室的各项规章制度,注意人身和设备安全,配合和服从实验室人员管理;4、教师在学生实验过程中予以必要的辅导,独立完成实验;5、采用集中授课形式。
五、实验条件1、具有WINDOWS 98/2000/NT/XP 操作系统的计算机一台;2、MATLAB 编程软件。
六、实验步骤在“开始--程序”菜单中,找到MATLAB 程序,运行启动;进入MATLAB 后 ,在Command Window 中输入自己编写的主程序,并执行;记录运行结果图形,作分析对比。
具体步骤如下:1、查看帮助文件,了解相关函数的调用格式。
2、1)用双线性变换法设计一个Chebyshev1型数字带通滤波器,设计指标为:ms T 1=,dB Rp 3=,π5.01=W p ,π7.02=W p ,dB R 60s =,π3.01=Ws ,π9.02=Ws2)(BW 型数字带通滤波器dB Rp 3=,π3.01=W p,π5.02=W p ,dB R 15s =,π1.01=Ws ,π7.02=Ws )3、KHz fp 1.0=,dB Rp 1=,KHz fs 3.0=,dB R 25s =,ms T 1=;(KHz fp 2=,dB Rp 5.0=,KHz fs 10=,dB R 50s =,kHz 1.44抽样频率为)分别用脉冲响应不变法和双线性变换法设计一个Butterworth 数字低通滤波器(1) 观察所设计数字滤波器的幅频特性曲线,记录带宽和衰减量;(2)比较两种方法的优缺点;(3)利用y=filter(b,a,x)函数观察对实际心电图信号的滤波效果。