数字信号处理实验报告
实验名称:离散系统频率响应和零极点分布 学生姓名: z 学生学号: 学生班级:
上课时间: 周二上午 指导老师:
一、 实验目的
通过MATLAB仿真简单的离散时间系统,研究其频域特性,加深对离散系统的冲激响应,频率响应分析和零极点分布概念的理解。
二、 实验原理
若用x(n)和y(n)分别表示一个线性时不变(LTI)离散时间系统,则其输入,输出关系可用以下常系数线性差分方程描述。记LTI离散时间系统单位冲激响应为h(n),h(n)反映了系统固有的特征,它是离散系统的一个重要参数。
任意LTI系统都可由系统单位冲激响应h(n)表示,相应地在频域响应H(w)表示,它是h(n)的傅里叶变换。
使系统函数的分母多项式等于零的z值,称为系统的极点;同理,使系统函数的分子多项式等于零的z值,称为系统的零点。
通过系统的零极点增益表达式,可以判断一个LTI离散时间系统的稳定性。对一个因果的离散时间系统,若所有的极点都位于单位圆内,则系统是稳定的。同理,由零极点分布图可大致估计出系统的频率响应:
(1) 单位圆附近的零点对幅度响应的谷点的位置与深度有明显
影响,当零点位于单位圆上时,谷点为零。零点可在单位圆
外。
(2) 单位圆附近的极点对幅度响应的峰点位置和高度有明显影
响。
三、实验内容
一个LTI离散时间系统的输入输出差分方程为 y(n)-1.6y(n-1)+1.28y(n-2)=0.5x(n)+0.1x(n-1)
(1) 编程求此系统的单位冲激响应序列,并画出其波形。 MATLAB程序如下:
N=100;
num=[0.5 0.1 0]; den=[1 -1.6 1.28]; y=impz(num,den,N); stem(y);
xlabel('时间序号'); ylabel('信号幅度'); title('冲激响应'); grid;
执行结果如下图形所示:
1.5x 105冲激响应10.5信号幅度0-0.5-10102030405060时间序号708090100
(2) 如输入序列x(n)=?(n)?2?(n?1)?3?(n?2)?4?(n?3)?5?(n?4),
编程求此系统输出序列y(n),并画出其图形。 MATLAB程序如下:
n=100;
x=[1 2 3 4 5 zeros(1,n-5) ]; subplot(2,1,1); stem(x);
xlabel('时序信号'); ylabel('信号幅度'); title('x(n)'); grid;
y=filter(num,den,x); subplot(2,1,2); stem(y);
xlabel('时序信号'); ylabel('信号幅度'); title('y(n)'); grid;
执行结果如下图形所示:
x(n)6420信号幅度0x 106102030405060时序信号y(n)70809010010.5信号幅度0-0.5-10102030405060时序信号708090100
(3) 编程得到系统频率响应的幅度响应和相位响应,并画图。
MATLAB程序如下:
fs=1000; b=[0.5 0.1 ]; a=[1 -1.6 1.28];
[h,f]=freqz(b,a,256,fs); mag=abs(h); ph=angle(h); ph=ph*180/pi; subplot(2,1,1); plot(f,mag);
xlabel('频率(Hz)'); ylabel('幅度'); subplot(2,1,2); plot(f,ph);
xlabel('频率(Hz)'); ylabel(‘幅度');
执行结果如下图形所示: