数字信号处理实验报告
南京邮电大学
实 验 报 告
实验名称_____熟悉MATLAB 环境 ___
快速傅里叶变换及其应用 ____IIR数字滤波器的设计_ FIR数字滤波器的设计
课程名称 数字信号处理A
班级学号_______09002111___________
姓 名 王都超
开课时间 2011/2012学年, 第 二 学期
实验一 熟悉MATLAB 环境
一、实验目的
(1)熟悉MA TLAB 的主要操作命令。 (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 。
D =
-2 -2 -2 -2 E =
3 8 15 24 F =
0.3333 0.5000 0.6000 0.6667 G =
1 16 243 4096 (2) 用MATLAB 实现下列序列: a) x (n ) =0. 8n 0≤n ≤15 n=0:1:15; x1=0.8.^n; a=(0.2+3*i)*n;
stem(x1)
b) x (n ) =e
(0. 2+3j ) n
0≤n ≤15
n=0:1:15; x2=exp(a); a=(0.2+3*i)*n; stem(x2)
c) x (n ) =3cos(0. 125πn +0. 2π) +2sin (0. 25πn +0. 1π) 0≤n ≤
15
(4) 绘出下列时间函数的图形,对x 轴、y 轴以及图形上方均须加上适当的标注:
a) x (t ) =sin (2πt ) 0≤t ≤
10s
b) x (t ) =cos(100πt ) sin (πt ) 0≤t ≤4s t=0:0.01:4;
x=cos(100*pi*t).*sin(pi*t); plot(t,x, 'r-');
xlabel('t'),ylabel('x(t)'),title('cos')
(6)
给定一因果系统H (z ) =(1+频响应和相频响应。
-1
+z
-2
) /(1-0. 67z
-1
+0. 9z
-2
) ,求出并绘制H (z ) 的幅
(7) 计算序列{8 -2 -1 2 3}和序列{2 3 -1 -3}的离散卷积,并作图表示卷积结果。
(8) 求以下差分方程所描述系统的单位脉冲响应h (n ), 0≤n
y (n ) +0. 1y (n -1) -0. 06y (n -2) =x (n ) -2x (n -1)
实验过程与结果(含实验程序、运行的数据结果和图形); clear all;
N=50; a=[1 -2];
b=[1 0.1 -0.06]; x1=[1 zeros(1,N-1)]; n=0:1:N-1; h=filter(a,b,x1); stem(n,h)
axis([-1 53 -2.5 1.2])
实验二 快速傅里叶变换及其应用
一、实验目的
(1) 在理论学习的基础上,通过本实验,加深对FFT 的理解,熟悉MA TLAB 中的有关函数。 (2) 应用FFT 对典型信号进行频谱分析。
(3) 了解应用FFT 进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT 。 (4) 应用FFT 实现序列的线性卷积和相关。
二、实验内容
实验中用到的信号序列 a) 高斯序列
⎧-(n -p )
q ⎪
x a (n ) =⎨e
⎪0⎩
2
0≤n ≤15 其他
b) 衰减正弦序列
⎧e -an sin(2πfn )
x b (n ) =⎨
0⎩
0≤n ≤15其他
c) 三角波序列
⎧n ⎪
x c (n ) =⎨8-n
⎪0⎩
0≤n ≤34≤n ≤7 其他
d) 反三角波序列
⎧4-n ⎪
x d (n ) =⎨n -4
⎪0⎩
0≤n ≤34≤n ≤7 其他
(1) 观察高斯序列的时域和幅频特性,固定信号x a (n ) 中参数p =8,改变q 的值,使q 分别等于2,4,8,观察它们的时域和幅频特性,了解当q 取不同值时,对信号序列的时域幅频特性的影响;固定q =8,改变p ,使p 分别等于8,13,14,观察参数p 变化对信号序列的时域及幅频特性的影响,观察p 等于多少时,会发生明显的泄漏现象,混叠是否也随之出现?记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。
(3) 观察三角波和反三角波序列的时域和幅频特性,用N =8点FFT 分析信号序列x c (n ) 和观察两者的序列形状和频谱曲线有什么异同?绘出两序列及其幅频特性x d (n ) 的幅频特性,曲线。
在x c (n ) 和x d (n ) 末尾补零,用N =32点FFT 分析这两个信号的幅频特性,观察幅频特性发生了什么变化?两种情况的FFT 频谱还有相同之处吗?这些变化说明了什么?
(5) 用FFT 分别实现x a (n ) (p =8,q =2)和x b (n ) (a =0.1,f =0.0625)的16点循环卷积和线性卷积。
n=0:15; p=8; q=2;
xa=exp(-(n-p).^2/q); subplot(2,3,1); stem(n,xa,'.' ); title('xa 波形' );
Xa=fft(xa,16); subplot(2,3,4); stem(abs(Xa),'.' );
title('Xa(k)=FFT[xa(n)]的波形 '); A=1; f=0.0625; a=0.1;
xb=exp(-a*n).*sin(2*pi*f*n); subplot(2,3,2);
stem(n,xb,'.' ); title('xb 波形' ); Xb=fft(xb,16); subplot(2,3,5); stem(abs(Xb),'.' );
title('Xb(k)=FFT[xb(n)]的波形 ');
实验过程与结果(含实验程序、运行的数据结果和图形);
实验三 IIR 数字滤波器的设计
一、实验目的
(1) 掌握双线性变换法及脉冲响应不变法设计IIR 数字滤波器的具体设计方法及其原理,熟悉用双线性变换法及脉冲响应不变法设计低通、高通和带通IIR 数字滤波器的计算机编程。 (2) 观察双线性变换及脉冲响应不变法设计的滤波器的频域特性,了解双线性变换法及脉冲响应不变法的特点。
(3) 熟悉巴特沃思滤波器、切比雪夫滤波器和椭圆滤波器的频率特性。
二、实验内容 (1)P162 例4.4
设采样周期T =250 s (采样频率f s =4kHz),分别用脉冲响应不变法和双线性变换法设计一个三阶巴特沃思低通滤波器,其3dB 边界频率为f c =1kHz。
脉冲响应不变法:
fc=1000;
fs=4000;
OmegaC=2*pi*fc;
[B,A]=butter(3, OmegaC,'s');
[num1,den1]=impinvar(B,A,fs);
[h1,w]=freqz(num1,den1);
f = w/pi*fs/2;
plot(f,abs(h1));
双线性变换法:
fc=1000;
fs=4000;
OmegaC=2*fs*tan(pi*fc/fs);
[B,A]=butter(3, OmegaC,'s');
[num2,den2]=bilinear(B,A,fs);
[h2,w]=freqz(num2,den2);
f = w/pi*fs/2;
plot(f,abs(h2));
同一图中画两条曲线:
fc=1000;
fs=4000;
OmegaC=2*pi*fc;
[B,A]=butter(3, OmegaC,'s');
[num1,den1]=impinvar(B,A,fs);
[h1,w]=freqz(num1,den1);
f = w/pi*fs/2;
OmegaC=2*fs*tan(pi*fc/fs);
[B,A]=butter(3, OmegaC,'s');
[num2,den2]=bilinear(B,A,fs);
[h2,w]=freqz(num2,den2);
f = w/pi*fs/2;
plot(f,abs(h1),'r-.');
hold on;
plot(f,abs(h2),'g-');
(选做) (2)f c =0.2kHz, =1dB,f r =0.3kHz,At =25dB,T =1ms;分别用脉冲响应不变法及双线性
变换法设计一巴特沃思数字低通滤波器,观察所设计数字滤波器的幅频特性曲线,记录带宽和衰减量,检查是否满足要求。比较这两种方法的优缺点。
实验过程与结果(含实验程序、运行的数据结果和图形);
实验四 FIR 数字滤波器的设计
一、实验目的
(1) 掌握用窗函数法,频率采样法及优化设计法设计FIR 滤波器的原理及方法,熟悉相应的计算机编程;
(2) 熟悉线性相位FIR 滤波器的幅频特性和相频特性;
(3) 了解各种不同窗函数对滤波器性能的影响。
二、实验内容
(1) 生成一个长度为20的矩形窗,画出其时域和幅频特性曲线。
n=0:1:19;
N=20;
win(1:20)=1;
[H,w]=freqz(win,1);
subplot(2,1,1);
stem(n,win)
subplot(2,1,2);
plot(w,abs(H));
(2) 用矩形窗设计一个21阶的线性相位低通FIR 数字滤波器,截止频率Wc =0.25π,求
出滤波器系数,并绘出滤波器的幅频特性。修改程序,分别得到阶次为N =41,61的滤波器,并显示其各自的幅频曲线。
a) 在上面所得的几幅图中,在截止频率两边可以观察到幅频响应的摆动行为。 请问波纹的数量与滤波器脉冲响应的长度之间有什么关系?
b) 最大波纹的高度与滤波器脉冲响应的长度之间有什么关系?
实验过程与结果(含实验程序、运行的数据结果和图形);
21阶的线性相位低通FIR 数字滤波器:
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=boxcar(N);
%%%不同窗函数
h=hd.*win';
[H,w]=freqz(h,1);
n=0:1:N-1;
stem(n,h)
subplot(3,1,2);
plot(w,abs(H));
subplot(3,1,3);
plot(w,angle(H));
41阶的线性相位低通FIR 数字滤波器:
Wc=0.25*pi;
N=41;
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=boxcar(N);
%%%不同窗函数
h=hd.*win';
[H,w]=freqz(h,1);
n=0:1:N-1;
subplot(3,1,1);
stem(n,h)
subplot(3,1,2);
subplot(3,1,3);
plot(w,angle(H));
61阶的线性相位低通FIR 数字滤波器:
Wc=0.25*pi;
N=61;
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=boxcar(N);
%%%不同窗函数
h=hd.*win';
[H,w]=freqz(h,1);
n=0:1:N-1;
subplot(3,1,1);
stem(n,h)
subplot(3,1,2);
plot(w,abs(H));
subplot(3,1,3);
plot(w,angle(H));
数字信号处理实验小结及心得体会:
通过这次实验,我对MATLAB 语言有了一定的认识,虽然还不能完全用MATLAB 独立编写程序,但对这种语言环境有了新的了解。我知道了一般的加减乘除在MATLAB 中不同的意义。知道输入、输出语句怎么形成。通过快速傅里叶变换及其应用的实验,加深了我对FFT 的理解,还有对各典型信号的频谱分析,改变参数后时域和幅频特性的变化。IIR 数字滤波器的设计让我知道了巴特沃思滤波器和切比雪夫滤波器的频率特性,还有双线性变换及脉冲响应不变法设计的滤波器的频率特性。做这个实验的时候程序有点困难,很多细节问题不能考虑清楚,导致图形出不来。FIR 数字滤波器的设计出来的是三种窗的图形,通过三种窗的比较,我了解了他们各自的特点,幅频和相频特性。我在这次实验中的收获很大,接触了很多新的知识,但在实验写程序时,我发现自己还有很多不足。很多程序写不完全。这是自己今后要加强的地方。