1、 南京邮电大学 实 验 报 告 实验名称 熟悉MATLAB环境 快速傅里叶变换(FFT)及其应用 IIR数字滤波器的设计 FIR数字滤波器的设计 课程名称 数字信号处理A 班级学号___ 14110 _ __ 姓 名_______ ___ ___ 开课时间 2015/2016学年, 第 二 学期 实验一 熟悉MATLAB环境 一、 实验目的 (1)熟悉MATLAB的主要操作命令。 (2)学会简单的矩阵输入和数据读写。
2、 (3)掌握简单的绘图命令。 (4)用MATLAB编程并学会创建函数。 (5)观察离散系统的频率响应。 二、 实验内容 (1) 数组的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3,4,5,6],求 C=A+B, D=A-B,E=A.*B,F=A./B,G=A.^B 。并用stem语句画出A、B、C、D、 E、F、G。 实验程序: n = 0:1:3; A=[1 2 3 4]; subplot(3,1,1) stem(n,A) xlabel('n') ylabel('A') B=[3,4,5,6]; subplot(3,1,2) stem(n
3、B) xlabel('n') ylabel('B') C=A+B; subplot(3,1,3) stem(n,C) xlabel('n') ylabel('C') figure subplot(4,1,1) D=A-B stem(n,D) xlabel('n') ylabel('D') subplot(4,1,2) E=A.*B stem(n,E) xlabel('n') ylabel('E') subplot(4,1,3) F=A./B stem(n,F) xlabel('n') ylabel('F') subplot(4,1,4) G=
4、A.^B stem(n,G) xlabel('n') ylabel('G') 图像: (2) 用MATLAB实现下列序列: a) 实验程序: n=0:1:15; x1=0.8.^n; stem(n,x1) xlabel('n') ylabel('x(n)') title('2(a)') 图像: b) 实验程序: n=0:1:15; i=sqrt(-1); a = 0.2+3*i; x2=exp(a*n); figure subplot(1,2,1) stem(n,real(x2)) xlabel('n') ylabel(
5、'x(n)实部') subplot(1,2,2) stem(n,imag(x2)) xlabel('n') ylabel('x(n)虚部') 图像: c) 实验程序: n=0:1:15; x3=3*cos(0.125*pi*n+0.2*pi) + 2*sin(0.25*pi*n+0.1*pi); stem(n,x3) xlabel('n') ylabel('x(n)') 图像: (4) 绘出下列时间函数的图形,对x轴、y轴以及图形上方均须加上适当的标注: a) 实验程序: t=0:0.001:10; x=sin(2*pi*t); p
6、lot(t,x,'r-') xlabel('t'),ylabel('x(t)'),title('sin(2\pit)') 图像: b) 实验程序: t=0:0.001:4; x=cos(100*pi*t).*sin(pi*t); plot(t,x,'r-') xlabel('t'),ylabel('x(t)'),title('cos(100pit)sin(pit)') 图像: (6)给定一因果系统,求出并绘制H(z)的幅频响应和相频响应。 实验程序: num=[1 sqrt(2) 1]; den=[1 -0.67 0.9]; w=0
7、pi/512:pi; h=freqz(num,den,w); subplot(2,2,1); plot(w/pi,real(h));grid title('实部') xlabel('\omega/\pi');ylabel('幅度') subplot(2,2,2); plot(w/pi,imag(h));grid title('虚部') xlabel('\omega/\pi');ylabel('幅度') subplot(2,2,3); plot(w/pi,abs(h));grid title('幅度谱') xlabel('\omega/\pi');ylabel('幅度
8、') subplot(2,2,4); plot(w/pi,angle(h));grid title('相位谱') xlabel('\omega/\pi');ylabel('相位(rad)'); 图像: (7) 计算序列{8 -2 -1 2 3}和序列{2 3 -1 -3}的离散卷积,并作图表示卷积结果。 实验程序: %输入x(n)及其下标 x=[8,-2,-1,2,3]; kx=0:4; %输入h(n)及其下标 h=[2,3,-1,-3]; kh=0:3; y=conv(x,h);%计算卷积 k=kx(1)+kh(1):kx(end)+kh(end);%计
9、算结果的下标 %计算结果作图 stem(k,y); xlabel('n');ylabel('y(n)'); 图像: (8) 求以下差分方程所描述系统的单位脉冲响应h(n), 实验程序: N=50; a=[1 -2]; b=[1 0.1 -0.06]; x=[1 zeros(1,N-1)]; k=0:1:N-1; y=filter(a,b,x); stem(k,y); xlabel('n');ylabel('幅度'); 图像: 每一小题均给出实验过程与结果(含实验程序、运行的数据结果和图形); 实验二
10、快速傅里叶变换(FFT)及其应用 一、 实验目的 (1) 在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉MATLAB中的有关函数。 (2) 应用FFT对典型信号进行频谱分析。 (3) 了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。 (4) 应用FFT实现序列的线性卷积和相关。 二、 实验内容 实验中用到的信号序列 a) 高斯序列 b) 衰减正弦序列 c) 三角波序列 d) 反三角波序列 (1) 观察高斯序列的时域和幅频特性,固定信号中参数p=8,改变q的值,使q分别等于2,4,8
11、观察它们的时域和幅频特性,了解当q取不同值时,对信号序列的时域幅频特性的影响;固定q=8,改变p,使p分别等于8,13,14,观察参数p变化对信号序列的时域及幅频特性的影响,观察p等于多少时,会发生明显的泄漏现象,混叠是否也随之出现?记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。 实验程序: function gauss(p,q) n=0:1:15; N=length(n); xa=exp(-(n-p).^2/q); M=10000; w=2*pi/M*(0:1:M-1); Xa=zeros(1,M); for k=1:M Xa(k)=sum(xa*(
12、exp(-j*w(k)*(0:N-1)'))); end subplot(2,1,1); stem(n,xa); xlabel('n'),ylabel('x_a(n)') subplot(2,1,2); plot(w,abs(Xa)) xlabel('\omega'),ylabel('幅度谱') p=8 q=2 图像: p=8 q=4 p=8 q=8 p=13 q=8 p=14 q=8 (2) 观察三角波和反三角波序列的时域和幅频特性,用N=8点FFT分析信号序列和的幅频特性,观察两者的序列形状和频谱曲线有什么异
13、同?绘出两序列及其幅频特性曲线。 实验程序: clear n=1:4 xc(n)=n-1; n=5:8 xc(n)=9-n; n=1:4 xd(n)=5-n; n=5:8 xd(n)=n-5; clc n=0:7 subplot(2,2,1); stem(n,xc); xlabel('n'); ylabel('xc(n)'); title('正三角波N=8'); subplot(2,2,2); hc(1:8)=fft(xc(1:8)); stem(n,abs(hc)); title('幅频特性'); n=0:7 subplot(2,2,3); s
14、tem(n,xd); xlabel('n'); ylabel('xd(n)'); title('反三角波N=8'); subplot(2,2,4); hd(1:8)=fft(xd(1:8)); stem(n,abs(hd)); title('幅频特性'); 图像: 在和末尾补零,用N=32点FFT分析这两个信号的幅频特性,观察幅频特性发生了什么变化?两种情况的FFT频谱还有相同之处吗?这些变化说明了什么? 实验程序: clear n=1:4 xcc(n)=n-1; n=5:8 xcc(n)=9-n; n=9:32 xcc(n)=0; n=1:4 x
15、dd(n)=5-n; n=5:8 xdd(n)=n-5; n=9:32 xdd(n)=0; clc n=0:31 subplot(2,2,1); stem(n,xcc); xlabel('n'); ylabel('xc(n)'); title('正三角波N=32'); subplot(2,2,2); hcc(1:32)=fft(xcc(1:32)); stem(n,abs(hcc)); title('幅频特性'); n=0:31 subplot(2,2,3); stem(n,xdd); xlabel('n'); ylabel('xd(n)'); tit
16、le('反三角波N=32'); subplot(2,2,4); hdd(1:32)=fft(xdd(1:32)); stem(n,abs(hdd)); title('幅频特性'); 图像: N=32时,两者的频谱不同,因为此时再做周期延拓就不相同了。在后面补零对于正三角波在n=8时是连续的,而反三角波在n=8时有个突变,时域中出现了陡峭的地方,在频域中频谱分量会增多。通过N=8和N=32比较得,通过在原序列的末端补零,增加了采样的点数,使谱线增多,但增多后的谱线形状是与时域信号的形状有关的。 (5) 用FFT分别实现(p=8,q=2)和(a=0.1,f=0.0625)的1
17、6点循环卷积和线性卷积。 实验程序: n1=0:1:15; n2=0:1:30; p=8;q=2;a=0.1;f=0.0625; xa=exp(-((n1-p).^2)/q); xb=exp(-a.*n1).*sin(2*pi*f.*n1); fa=fft(xa);fb=fft(xb); circle=fa.*fb; %圆周卷积 line=conv(xa,xb); %线性卷积 subplot(2,2,1); stem(n1,xa);ylabel('时域特性');title('高斯序列xa'); subplot(2,2,2); stem(n1,xb);yl
18、abel('时域特性');title('衰减正弦序列xb'); subplot(2,2,3); stem(n1,circle);ylabel('幅频特性');title('xa与xb的16点循环卷积'); subplot(2,2,4); stem(n2,line);ylabel('幅频特性');title(' xa与xb的线性卷积'); 图像: 每一小题均给出实验过程与结果(含实验程序、运行的数据结果和图形); 实验三 IIR数字滤波器的设计 一、 实验目的 (1) 掌握双线性变换法及脉冲响应不变法设计IIR数字滤波器的具体设计方法及其原理,熟悉用
19、双线性变换法及脉冲响应不变法设计低通、高通和带通IIR数字滤波器的计算机编程。 (2) 观察双线性变换及脉冲响应不变法设计的滤波器的频域特性,了解双线性变换法及脉冲响应不变法的特点。 (3) 熟悉巴特沃思滤波器、切比雪夫滤波器和椭圆滤波器的频率特性。 二、 实验内容 (1)P162 例4.4 设采样周期T=250(采样频率=4kHz),分别用脉冲响应不变法和双线性变换法设计一个三阶巴特沃思低通滤波器,其3dB边界频率为=1kHz。 实验程序: fc=1000; fs=4000; [B,A]=butter(3, 2*pi*fc,'s'); [num1,den1]=im
20、pinvar(B,A,fs); [h1,w]=freqz(num1,den1); f = w/pi*fs/2; %双线性变换法 fc=1000; fs=4000; [B,A]=butter(3, 2*fs*tan(pi*fc/fs),'s'); [num2,den2]=bilinear(B,A,fs); [h2,w]=freqz(num2,den2); f = w/pi*fs/2; plot(f,abs(h1),'-.',f,abs(h2),'-'); grid on legend('脉冲响应不变法','双线性变换法') xlabel('频率/Hz') yla
21、bel('幅度') 图像: (2)=0.2kHz,=1dB,=0.3kHz,At=25dB,T=1ms;分别用脉冲响应不变法及双线性变换法设计一巴特沃思数字低通滤波器,观察所设计数字滤波器的幅频特性曲线,记录带宽和衰减量,检查是否满足要求。比较这两种方法的优缺点。 实验程序: fc = 200; Rp = 1; fr = 300; Rs = 25; T = 0.001; fs = 1/T; %脉冲响应不变法 Wp=2*pi*fc; Ws=2*pi*fr; [N,Wn] = buttord(Wp, Ws, Rp, Rs,'s') [B,A]=butter(N,
22、 Wn,'s'); [num1,den1]=impinvar(B,A,fs); [h1,w]=freqz(num1,den1); %双线性变换法 Wp=2*fs*tan(pi*fc/fs); Ws=2*fs*tan(pi*fr/fs); [N,Wn] = buttord(Wp, Ws, Rp, Rs,'s') [B,A]=butter(N, Wn,'s'); [num2,den2]=bilinear(B,A,fs); [h2,w]=freqz(num2,den2); f = w/pi*fs/2; plot(f,abs(h1),'-.',f,abs(h2),'-')
23、 grid on legend('脉冲响应不变法','双线性变换法') xlabel('频率/Hz') ylabel('幅度') 图像: (3)利用双线性变换法设计满足下列指标的巴特沃思数字低通滤波器,并作图验证设计结果: =1.2kHz,,=2kHz,At,=8kHz。 实验程序: wc=2*pi*1200;wr=2*pi*2000;rp=0.5;rs=40;fs=8000; w1=2*fs*tan(wc/(2*fs)); w2=2*fs*tan(wr/(2*fs)); [Nb,wn]=buttord(w1,w2,rp,rs,'s')
24、 %巴特沃思 [B,A]=butter(Nb,wn,'s'); [num1,den1]=bilinear(B,A,fs); [h1,w]=freqz(num1,den1); [Nc,wn]=cheb1ord(w1,w2,rp,rs,'s') %切比雪夫 [B,A]=cheby1(Nc,rp,wn,'s'); [num2,den2]=bilinear(B,A,fs); [h2,w]=freqz(num2,den2); [Ne,wn]=ellipord(w1,w2,rp,rs,'s') %椭圆型 [B,A]=ellip(Ne,rp,r
25、s,wn,'low','s'); [num3,den3]=bilinear(B,A,fs); [h3,w]=freqz(num3,den3); f=w/pi*4000; plot(f,20*log10(abs(h1)),'-',f,20*log10(abs(h2)),'--',f,20*log10(abs(h3)),':'); axis([0,3000,-100,10]);grid; xlabel('频率/Hz'); ylabel('幅度/dB'); title('三种数字低通滤波器'); legend('巴特沃思数字低通滤波器','切比雪夫数字低通滤波器','椭圆
26、数字低通滤波器',3); 图像: 每一小题均给出实验过程与结果(含实验程序、运行的数据结果和图形); 实验四 FIR数字滤波器的设计 一、 实验目的 (1) 掌握用窗函数法,频率采样法及优化设计法设计FIR滤波器的原理及方法,熟悉相应的计算机编程; (2) 熟悉线性相位FIR滤波器的幅频特性和相频特性; (3) 了解各种不同窗函数对滤波器性能的影响。 二、 实验内容 (1) N=45,计算并画出矩形窗、汉明窗、布莱克曼窗的归一化的幅度谱。 实验程序: clear,close all; N=45; [h1,x]=
27、freqz(boxcar(N)); [h2,x1]=freqz(hamming(N)); [h3,x2]=freqz(blackman(N)); figure(1) plot(x/pi,20*log10(abs(h1)),'red'); hold; plot(x1/pi,20*log10(abs(h2)),'blue'); plot(x2/pi,20*log10(abs(h3)),'green'); xlabel('归一化频率/\pi'); ylabel('幅度'); title('幅度谱'); legend('矩形窗','汉明窗','布莱克曼窗') 图像:
28、2) 用矩形窗设计一个21阶的线性相位低通FIR数字滤波器,截止频率Wc=0.25π,求出滤波器系数,并绘出滤波器的幅频特性。修改程序,分别得到阶次为N=41,61的滤波器,并显示其各自的幅频曲线。 实验程序: Wc=0.25*pi; N=21; M=(N-1)/2; %位移量 for n=0:(N-1) if (n== fix(M)) %中间的点单独算 hd(n+1)=Wc/pi; else hd(n+1)=sin(Wc*(n-M)) /(pi*(n-M)); end; end; win=
29、boxcar(N); %%%不同窗函数 h=hd.*win'; [H,w]=freqz(h,1); n=0:1:N-1; subplot(3,1,1); stem(n,h) xlabel('n'),ylabel('h(n)') subplot(3,1,2); plot(w,abs(H)); xlabel('\omega'),ylabel('幅度谱') subplot(3,1,3); plot(w,angle(H)); xlabel('\omega'),ylabel('相位谱') 图像: N=21 N=41 N=61 a)
30、 在上面所得的几幅图中,在截止频率两边可以观察到幅频响应的摆动行为。 请问波纹的数量与滤波器脉冲响应的长度之间有什么关系? 答:滤波器脉冲响应越长波纹数量越少。 b) 最大波纹的高度与滤波器脉冲响应的长度之间有什么关系? 答:滤波器脉冲响应越长最大波纹的高度越高。 每一小题均给出实验过程与结果(含实验程序、运行的数据结果和图形); 数字信号处理实验小结及心得体会: 答:本次实验,带给我课本之外不一样的体验,使我对数字信号这门课有了更深入的了解。 在实验过程中,老师给予的教导和提示给实验的操作带来的很大的方便,十分感谢老师的悉心指导。






