1、第10章 上 机实验,10.1 引言 10.2 关于实验用计算机语言 10.3 实验一: 信号、 系统及系统响应 10.4 实验二: 用FFT作谱分析 10.5 实验三: 用双线性变换法设计IIR数字滤波器 10.6 实验四: 用窗函数法设计FIR数字滤波器,10.1 引言,第一、 二章是全书的基础内容。 第三、 四章DFT、 FFT是数字信号处理的重要数学工具, 它有广泛的使用内容。,10.2 关于实验用计算机语言,MATLAB是一种交互式的以矩阵为基本数据结构的系统。 在生成矩阵对象时, 不要求明确的维数说明。 所谓交互式, 是指MATLAB的草稿纸编程环境。 与C语言或FORTRON语言
2、作科学数值计算的程序设计相比较, 利用MATLAB可节省大量的编程时间。,10.3 实验一: 信号、 系统及系统响应,1. 实验目的(1) 熟悉连续信号经理想采样前后的频谱变化关系, 加深对时域采样定理的理解。(2) 熟悉时域离散系统的时域特性。(3) 利用卷积方法观察分析系统的时域特性。(4) 掌握序列傅里叶变换的计算机实现方法, 利用序列的傅里叶变换对连续信号、 离散信号及系统响应进行频域分析。,2. 实验原理与方法采样是连续信号数字处理的第一个关键环节。 对一个连续信号xa(t)进行理想采样的过程可用(10.3.1)式表示。,(10.3.1),其中 (t)为xa(t)的理想采样, p(t
3、)为周 期冲激脉冲, 即,(10.3.2),(t)的傅里叶变换 (j)为,(10.3.3),将(10.3.2)式代入(10.3.1)式并进行傅里叶变换,,式中的xa(nT)就是采样后得到的序列x(n), 即,x(n)的傅里叶变换为,(10.3.4),(10.3.5),比较(10.3.5)和(10.3.4)可知,(10.3.6),在数字计算机上观察分析各种序列的频域特性, 通常对X(ej)在0, 2上进行M点采样来观察分 析。 对长度为N的有限长序列x(n), 有,一个时域离散线性非移变系统的输入/输出关系为,其中,(10.3.8),上述卷积运算也可以在频域实现3. 实验内容及步骤(1) 认真复
4、习采样理论、 离散信号与系统、 线性卷积、 序列的傅里叶变换及性质等有关内容, 阅读本实验原理与方法。(2) 编制实验用主程序及相应子程序。 信号产生子程序, 用于产生实验中要用到的下列信号序列: xa(t)=Ae-at sin(0t)u(t),(10.3.9),进行采样, 可得到采样序列xa(n)=xa(nT)=Ae-anT sin(0nT)u(n), 0n50其中A为幅度因子, a为衰减因子, 0是模拟角频率, T为采样间隔。 这些参数都要在实验过程中由键盘输入, 产生不同的xa(t)和xa(n)。b. 单位脉冲序列: xb(n)=(n)c. 矩形序列: xc(n)=RN(n), N=10
5、 系统单位脉冲响应序列产生子程序。 本实验要用到两种FIR系统。a. ha(n)=R10(n);b. hb(n)=(n)+2.5(n-1)+2.5(n-2)+(n-3), 有限长序列线性卷积子程序, 用于完成两个给定长度的序列的卷积。 可以直接调用MATLAB语言中的卷积函数conv。 conv用于两个有限长度序列的卷积, 它假定两个序列都从n=0 开始。 调用格式如下:y=conv (x, h),图10.3.1 实验一的主程序框图,图10.3.2 xa(t)的幅频特性曲线,(3) 调通并运行实验程序, 完成下述实验内容: 分析采样序列的特性。a. 取采样频率fs=1 kHz, 即T=1 ms
6、。 b. 改变采样频率, fs=300 Hz, 观察|X(ej)|的变化, 并做记录(打印曲线); 进一步降低采样频率, fs=200 Hz, 观察频谱混叠是否明显存在, 说明原因, 并记录(打印)这时的|X(ej)|曲线。, 时域离散信号、 系统和系统响应分析。a. 观察信号xb(n)和系统hb(n)的时域和频域特性; 利用线性卷积求信号xb(n)通过系统hb(n)的响应y(n), 比较所求响应y(n)和hb(n)的时域及频域特性, 注意它们之间有无差别, 绘图说明, 并用所学理论解释所得结果。b. 观察系统ha(n)对信号xc(n)的响应特性。 卷积定理的验证。,4. 思考题(1) 在分析
7、理想采样序列特性的实验中, 采样频率不同时, 相应理想采样序列的傅里叶变换频谱的数字频率度量是否都相同? 它们所对应的模拟频率是否相同? 为什么?(2) 在卷积定理验证的实验中, 如果选用不同的频域采样点数M值, 例如, 选M=10和M=20, 分别做序列的傅里叶变换, 求得,所得结果之间有无差异? 为什么?,5. 实验报告要求(1) 简述实验目的及实验原理。(2) 按实验步骤附上实验过程中的信号序列、 系统单位脉冲响应及系统响应序列的时域和幅频特性曲线, 并对所得结果进行分析和解释。(3) 总结实验中的主要结论。(4) 简要回答思考题。,10.4 实验二: 用FFT作谱分析,1.实验目的(1
8、) 进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法, 所以FFT的运算结果必然满足DFT的基本性质)。(2) 熟悉FFT算法原理和FFT子程序的应用。(3) 学习用FFT对连续信号和时域离散信号进行谱分析的方法, 了解可能出现的分析误差及其原因, 以便在实际中正确应用FFT。,2.实验步骤(1) 复习DFT的定义、 性质和用DFT作谱分析的有关内容。(2) 复习FFT算法原理与编程思想, 并对照DIT-FFT运算流图和程序框图, 读懂本实验提供的FFT子程序。(3) 编制信号产生子程序, 产生以下典型信号供谱分析用:,其它n,其它n,(4) 编写主程序。图 10.
9、4.1 给出了主程序框图, 供参考。 本实验提供FFT子程序和通用绘图子程序。(5) 按实验内容要求, 上机实验, 并写出实验报告。,图10.4.1 主程序框图,3. 上机实验内容(1) 对 2 中所给出的信号逐个进行谱分析。 下面给出针对各信号的FFT变换区间N以及对连续信号x6(t)的采样频率fs, 供实验时参考。x1(n), x2(n), x3(n), x4(n), x5(n): N=8,16=x6(t): fs=64(Hz), N=16, 32, 64(2) 令x(n)=x4(n)+x5(n), 用FFT计算 8 点和 16 点离散傅里叶变换,X(k)=DFTx(n)(3) 令x(n)
10、=x4(n)+jx5(n), 重复(2)。,4. 思考题(1) 在N=8时, x2(n)和x3(n)的幅频特性会相同吗? 为什么? N=16呢?(2) 如果周期信号的周期预先不知道, 如何用FFT进行谱分析?5. 实验报告要求(1) 简述实验原理及目的。(2) 结合实验中所得给定典型序列幅频特性曲线, 与理论结果比较, 并分析说明误差产生的原因以及用FFT作谱分析时有关参数的选择方法。(3) 总结实验所得主要结论。(4) 简要回答思考题。,6. 实验用子程序本实验的主程序比较简单, 直接根据图 10.4.1 所给框图编写程序即可。 编程难点是FFT子程序。 /* DIT-FFT 函数(C语言)
11、 */;fft基 2DITFFT函数要求: 指向复数数组指针X, FFT长度为2m, m为正整数FFT输出结果放在输入复数数组中。/*计算N点FFT子程序*/*xr:=信号序列实部,xi:=信号序列虚部,N:=FFT变换区间长度N=2M*/*如果信号长度小于N,应该给xr,xi后面补0*/*计算结果X(K)的实部和虚部分别存储在数组xr和xi中*/,void Fft(double xr,double xi,int N,int M) int L,B,J,P,k,i;double rPartKB,iPartKB;/*分别代表X(K+B)的实部和虚部*/double rCf128,iCf128 ;/
12、*rCf存储旋转因子实部, iCf存储旋转因子虚部*/*旋转因子数组长度应根据自己需要调整*/*计算旋转因子*/,double PI2= 8.0*atan(1.0);for( i=0;iN;i+)rCfi=cos(i*PI2/N);iCfi=sin(i*PI2/N);ChangeOrder( xr, xi, N);/*调用倒序子程序*/*计算各级蝶形*/for(L=1;L=M;L+)B = (int)(pow(2,(L-1)+0.5);,for(J=0;J=B-1;J+)P = J*(int)(pow(2,(M-L)+0.5);for(k=J;k=N-1;k+=(int)(pow(2,L)+0
13、.5)rPartKB = xrk+B*rCfP-xik+B*iCfP iPartKB = xik+B*rCfP+xrk+B*iCfP,xrk+B = xrk - rPartKB;xik+B = xik - iPartKB;xrk = xrk + rPartKB;xik = xik + iPartKB; /*倒序子程序*/,void ChangeOrder(double xr,double xi,int N) int LH,N1,I,J,K;double T;LH = N/2; J = LH; N1 = N-2;for(I =1;I=N1;I+)if(IJ)T = xrI;xrI = xrJ;x
14、rJ = T T = xiI;xiI = xiJ;xiJ = T,K = LH;while(J=K) J=J-K;K=(int)(K/2+0.5);J=J+K; ,10.5 实验三: 用双线性变换法设计 IIR数字滤波器,1. 实验目的(1) 熟悉用双线性变换法设计IIR数字滤波器的原理与方法。(2) 掌握数字滤波器的计算机仿真方法。(3) 通过观察对实际心电图信号的滤波作用, 获得数字滤波的感性知识。,2. 实验内容(1) 用双线性变换法设计一个巴特沃斯低通IIR数字滤波器。 (2) 以 0.02为采样间隔, 打印出数字滤波器在频率区间0, /2上的幅频响应特性曲线。(3) 用所设计的滤波器
15、对实际心电图信号采样序列(在本实验后面给出)进行仿真滤波处理,并分别打印出滤波前后的心电图信号波形图, 观察总结滤波作用与效果。,3. 实验步骤(1) 复习有关巴特沃斯模拟滤波器设计和用双线性变换法设计IIR数字滤波器的内容, 按照例 6.4.2, 用双线性变换法设计数字滤波器系统函数H(z)。例 6.4.2 中已求出满足本实验要求的数字滤波器系统函数:,(10.5.1),A=0.090 36 B1=1.2686,C1=-0.7051 B2=1.0106,C2=-0.3583 B3=0.9044,C3=-0.2155,(10.5.2),由(10.5.1)式和(10.5.2)式可见, 滤波器H(
16、z)由三 个二阶滤波器H1(z), H2(z)和H3(z)级联组成, 如图 10.5.1 所示。,图10.5.1 滤波器H(z)的组成,(2) 编写滤波器仿真程序, 计算H(z)对心电图信号采样序列x(n)的响应序列y(n)。设yk(n)为第k级二阶滤波器Hk(z)的输出序列, y k-1 (n)为输入序列, 如图10.5.1 所示。 由(10.5.2)式可得到差分方程:yk(n)=Ay k-1 (n)+2Ay k-1 (n-1)+Ay k-1 (n-2)+Bkyk(n-1)+Ckyk(n-2) (10.5.3)(3) 在通用计算机上运行仿真滤波程序, 并调用通用绘图子程序, 完成实验内容(2
17、)和(3)。,4. 思考题用双线性变换法设计数字滤波器过程中, 变换公式中T的取值, 对设计结果有无影响? 为什么?5. 实验报告要求(1) 简述实验目的及原理。(2) 由所打印的|H(ej)|特性曲线及设计过程简述双线性变换法的特点。(3) 对比滤波前后的心电图信号波形, 说明数字滤波器的滤波过程与滤波作用。(4) 简要回答思考题。,6. 心电图信号采样序列x(n)人体心电图信号在测量过程中往往受到工业高频干扰, 所以必须经过低通滤波处理后, 才能作为判断心脏功能的有用信息。 下面给出一实际心电图信号采样序列样本x(n), 其中存在高频干扰。 在实验中, 以x(n)作为输入序列, 滤除其中的
18、干扰成分。,x(n) =-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,10.6 实验四: 用窗函数法设计 FIR数字滤波器,1. 实验目的 (1) 掌握用窗函数法设计FIR数字滤波器的原理和方法。 (2) 熟悉线性相位FIR数
19、字滤波器特性。 (3) 了解各种窗函数对滤波特性的影响。,2. 实验原理与方法如果所希望的滤波器的理想频率响应函数为Hd(e j), 则其对应的单位脉冲响应为,(10.6.1),用窗函数w(n)将hd(n)截断, 并进行加权处理, 得到:,(10.6.2),h(n)就作为实际设计的FIR数字滤波器的单位脉 冲响应序列, 其频率响应函数H(e j)为,(10.6.3),如果要求线性相位特性, 则h(n)还必须满足:根据上式中的正、 负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。 要根据所设计的滤波特性正确选择其中一类。 例如, 要设计线性相位低通特性, 可选择h(n)=h(N-1-n)一
20、类, 而不能选h(n)=-h(N-1-n)一类。,3. 实验内容及步骤(1) 复习用窗函数法设计FIR数字滤波器一节内容, 阅读本实验原理, 掌握设计步骤。(2) 编写程序。 编写能产生矩型窗、 升余弦窗、 改进升余弦窗和二阶升余弦窗的窗函数子程序。 编写主程序。 主程序框图如图 10.6.1 所示, 仅供参考。 其中幅度特性要求用dB表示。,图10.6.1 用窗函数法设计滤波器主程序框图,设,(3) 上机实验内容。,其中,4.思考题(1) 如果给定通带截止频率和阻带截止频率以及阻带最小衰减, 如何用窗函数法设计线性相位低通滤波器? 写出设计步骤。(2) 如果要求用窗函数法设计带通滤波器, 且给定上、 下边带截止频率为1和2,试求理想带通的单位脉冲响应hd(n)。,5.实验报告要求(1) 简述实验目的及原理。(2) 按照实验步骤及要求, 比较各种情况下的滤波性能, 说明窗口长度N和窗函数类型对滤波特性的影响。(3) 总结用窗函数法设计FIR滤波器的主要特点。(4) 简要回答思考题。,