电子科技大学自动化工程学院实验指导书(实验)课程名称数字信号处理电子科技大学教务处制表实验一、用FFT作频谱分析1.实验目的1)熟悉仿真工具MATLAB的基本使用方法。2)熟练掌握用MATLAB产生常用信号的方法。3)进一步加深DFT算法原理和基本性质的理解。4)熟悉FFT算法原理。5)学习用FFT对连续信号和时域离散信号进行频谱分析的方法。2.实验原理傅里叶变换和z变换是数字信号处理中常用的重要数学变换。对于有限长序列,还有一种更为重要的数学变换,即离散傅里叶变换(DFT)。DFT之所以更为重要,是因为其实质是有限长序列傅里叶变换的有限点离散采样,从而开辟了频域离散化的道路,这样就大大增加了数字信号处理的灵活性。更重要的是DFT有多种快速算法,统称为快速傅里叶变换(FFT)。FFT就是不断地把长序列的DFT分解成几个短序列的DFT,并利用旋转因子的周期性和对称性来减少DFT的运算次数,其中最常用的是基2FFT算法。时间抽取的基2FFT算法具有原位运算、码位倒置的特点,其旋转因子的变化也有特点,非常利于编程。所谓信号的谱分析,就是计算信号的傅里叶变换。为了利用DFT对连续信号进行频谱分析,先对信号进行时域采样,得到)()(nTxnxa,再对x(n)进行DFT。连续信号的频谱特性可以通过对连续信号采样并进行DFT再乘以T的近似方法得到。但直接由分析结果)(kXa看不到)(jfXa的全部频谱特性,而只能看到N个离散采样点的谱特性,即栅栏效应。如果)(txa持续时间无限长,要进行截断处理,所以会产生频率混叠和泄漏现象。在对连续信号进行谱分析时,主要关心两个问题,这就是谱分析范围和频率分辨率。谱分析范围受采样频率的限制;频率分辨率用频率采样间隔描述,表示谱分析中能够分辨的两个频谱分量的最小间隔。3.实验内容1)复习DFT的定义、性质和用DFT作频谱分析的有关内容。2)复习FFT算法原理与编程思想,查阅C语言编制的DIT-FFT算法程序。3)用MATLAB产生信号1423448()(),()cos,()sin,()sin8cos16cos20xnRnxnnxnnxtttt。4)对)(1nx、)(2nx和3()xn取N为8和16进行谱分析;对4()xt,取fs=64(Hz),N=16,32,64进行谱分析。5)令23()()()xnxnjxn,用FFT计算8点和16点离散傅里叶变换:()[()]XkDFTxn,根据DFT的对称性,由()Xk求出22()[()]XkDFTxn和33()[()]XkDFTxn。4.实验步骤1)产生信号1423448()(),()cos,()sin,()sin8cos16cos20xnRnxnnxnnxtttt2)对信号)(1nx、)(2nx和3()xn进行谱分析。3)对信号4()xt进行谱分析,采样频率)(64Hzfs,N=16,32,64。4)令23()()()xnxnjxn,用FFT计算8点和16点离散傅里叶变换:()[()]XkDFTxn,根据DFT的对称性,由()Xk求出22()[()]XkDFTxn和33()[()]XkDFTxn,并与(2)中的结果进行比较。5)用C语言编制DIT-FFT算法程序。5.试验报告要求1)简述实验原理及目的。2)结合实验中得到的信号)(3tx幅频特性曲线,分析说明误差产生的原因以及用FFT作谱分析时有关参数的选择方法。3)总结实验所得主要结论。实验二、基于MATLAB的数字滤波器的设计1.实验目的1)熟悉IIR数字滤波器设计的原理与方法。2)熟悉用窗函数法设计FIR数字滤波器设计的原理与方法。3)掌握IIR和FIR数字滤波器的计算机仿真方法。4)通过观察对实际心电信号的滤波作用,获得数字滤波的感性知识。2.实验原理IIR滤波器常用的一种设计方法是借助模拟滤波器的设计方法进行的,即,先设计模拟滤波器得到传输函数)(sHa,然后将)(sHa按某种方法转换成数字滤波器的系统函数)(zH。转换方法主要有脉冲响应不变法和双线性变换法。脉冲响应不变法就是使数字滤波器的单位脉冲响应模仿模拟滤波器的冲激响应,由于时域采样后造成频域的周期延拓,可能会造成频域的混叠,因此不适合高通、带阻滤波器的设计。另一种常用的方法是双线性变换法。双线性变换法为了克服s平面与z平面的非一一对应关系,采用了非线性频率压缩方法:首先将原s平面压缩到s1平面的一条横带内,再将s1平面映射到z平面上。虽然双线性变换法的模拟频率与数字频率间是非线性的关系,但消除了频率的混叠。FIR滤波器常用的一种设计方法是窗口法。如果希望滤波器的频率响应为)(jdeH,则其对应的单位脉冲响应为deeHnhnjjdd)()(21。窗函数设计法的基本原理是用有限长单位脉冲响应序列h(n)逼近hd(n)。由于hd(n)往往是无限长序列,且是非因果的,所以用窗函数w(n)将hd(n)截断,并进行加权处理,得到h(n)=hd(n)w(n),h(n)就作为实际设计的FIR数字滤波器的单位脉冲响应序列,其频率响应函数为10)()(NnnjjenheH,式中N为所选窗函数w(n)的长度。用窗函数法设计的滤波器性能取决于窗函数的类型及窗口长度。设计中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度。选定窗函数类型和窗口长度后,求出单位脉冲响应和频率响应。频率响应是否满足要求,要进行验算,如果不满足要求,则要重新选择窗函数类型和长度,再次验算,直至满足要求为止。如果要求线性相位特性,则单位脉冲响应还必须满足偶对称或奇对称特性。根据单位脉冲响应的奇偶对称性和长度的奇偶性又将线性相位FIR滤波器分成四类,要根据所设计的滤波特性正确选择其中一类。3.实验内容1)设计给定指标的Butterworth数字低通滤波器。设计指标参数为:在通带内[0,0.2π]频率区间上,最大衰减小于1dB;在阻带[0.3π,π]内,最小衰减大于15dB。并画出滤波器的频响特性曲线。2)设计给定指标的FIR数字低通滤波器。3)用所设计的数字滤波器对实际心电信号进行仿真滤波处理,分别打印出滤波前后的心电信号时域和频域波形。4.实验步骤1)复习有关Butterworth模拟滤波器设计和用双线性变换法设计IIR数字滤波器的内容,用双线性变换法设计数字滤波器的系统函数。2)复习用窗函数法设计FIR数字滤波器的内容,并设计数字滤波器的系统函数。3)用Matlab中的函数画出心电信号的时域和频域波形。4)用Matlab中的函数设计满足要求的数字滤波器,画出滤波器的频响曲线。5)用设计出的滤波器对心电信号进行滤波处理,画出滤波后的信号时域与频域波形。6)用C语言编写滤波器仿真程序,对心电信号进行滤波处理,将结果与步骤5的结果进行比较。5.实验报告要求1)简述实验目的及原理。2)对比滤波前后的心电信号波形,说明数字滤波器的滤波过程与滤波作用。3)对比C语言编写的滤波程序和Matlab中的滤波程序的结果。附心电数据:-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0,-2,-4,-2,0,-2,-4,-4,2,0,0,-2,-4,-2,0,0,-2,-4,-2,0,0,-4,-4,-2,-2,-4,-6,-6,-4,-4,8,-10,-8,-6,-6,-8,-12,-10,-8,-8,-10,-12,-10,-8,-8,-10,-10,-8,-6,-6,-8,-8,-4,-2,-4,-4,-4,0,0,-2,-4,-2,-2,0,-4