离散信号与系统的时域分析
摘要:通过对数字信号处理的深刻理解,在有MATLAB对信号进行仿真前提下,使得离散信号输出更准确更形象。利用MATLAB工具箱中filter函数对差分方程求解,防真出系统响应和系统单位脉冲响应,用conv函数完成线形卷积。在判断系统稳定性时,巧妙的将输入信号改为单位阶跃序列,观察稳态输出是否趋于常数(包括零)来判断,如果输出趋于数,则系统稳定,否则系统不稳定。然而,完整的模拟也会存在细小的瑕疵,所以本文还需要改进。尤其是在卷积编程时,冗余度较大。
报告要求:
(1)简述离散系统时域分析方法;
答:离散系统在时域中,是通过差分方程,单位脉冲响应或系统函数对系统特性进行描写。所以在输入信号已知的情况下,知道其中之一就可以利用MATLAB就可以对其进行求解。倘若一直差分方程就适合用工具箱函数filter求差分方程的解。也可以用conv函数计算输入信号核系统的单位脉冲响应的线形卷积,求出系统响应。
(2)简述通过实验判断系统稳定性的方法;
答:判断系统稳定性,从时域看可以通过检查系统单位脉冲响应是否绝对可和来判断。但实际中,只要用单位阶跃序列作为输入信号,如果稳态输出趋于常数或零,则系统稳定,否则系统不稳定。
(3)完成设计实验,并对结果进行分析和解释;
(4)打印程序清单和要求画出的信号波形;
(5)写出本次课程设计的收获和体会。
程序清单和波形图
定义基础函数:
1 uDT为单位阶跃序列
function y=uDT(n)
y=n>=0; %当参数大于等于0时阶跃为1,否则为0
- impDT为单位采样序列
function y=impDT(n)
y=(n==0); %当参数为0时冲激为1,否则为0
第一题:
1 给定一个低通滤波器的差分方程为
程序一:
%系统响应%
N=8;
a=[1 -0.9];
b=[0.05 0.05];
n=0:30;
subplot(211)
x1=uDT(n)-uDT(n-N);
y1=filter(b,a,x1);
stem(n,y1,'fill','g'),grid on
xlabel('n'),title('系统响应y1(n)')
subplot(212)
x2=uDT(n);
y2=filter(b,a,x2);
stem(n,y2,'fill','r'),grid on
xlabel('n'),title('系统响应y2(n)')
2 系统的单位脉冲响应波形图如下:
程序二:
%系统单位脉冲响应%
a=[1 -0.9];
b=[0.05 0.05];
n=0:30;
impz(b,a,30),grid on
title('系统单位脉冲响应h(n)')
第二题:
用线性卷积法求x1(n)=R8(n)分别对系统h1(n)和h2(n)的输出响应,画出波形如下:
程序三:
%线性卷积%
nx=-1:5; %x(n)向量显示范围(添加了附加的零值)
nh=-2:10; %h(n)向量显示范围(添加了附加的零值)
x=uDT(nx)-uDT(nx-8);
h1=uDT(nh)-uDT(nh-10);
h2=impDT(nh)+2.5.*impDT(nh-1)+2.5.*impDT(nh-2)+impDT(nh-3);
y1=conv(x,h1);
y2=conv(x,h2);
ny1=nx(1)+nh(1); %卷积结果起始点
%卷积结果长度为两序列长度之和减1,即0到(length(nx)+length(nh)-2);
%因此卷积结果的时间范围是将上述长度加上起始点的偏移值
ny=ny1+(0:(length(nx)+length(nh)-2));
subplot(321)
stem(nx,x,'fill'),grid on
xlabel('n'),title('x(n)')
axis([-4 16 0 3])
subplot(322)
stem(nh,h1','fill'),grid on
xlabel('n'),title('h1(n)')
axis([-4 16 0 3])
subplot(323)
stem(nh,h2','fill'),grid on
xlabel('n'),title('h2(n)')
axis([-4 16 0 3])
subplot(324)
stem(ny,y1,'fill'),grid on
xlabel('n'),title('y(n)=x(n)*h1(n)')
axis([-4 16 0 3])
subplot(325)
stem(ny,y2,'fill'),grid on
xlabel('n'),title('y(n)=x(n)*h2(n)')
axis([-4 16 0 3])
第三题:
用实验方法检查系统是否稳定。输入信号为u(n)时,画出系统输出波形如下:
从频域看:
程序四:
B=[1,1.8237,-0.9801];
A=[1/100.49,0,-1/100.49];
zplane(B,A),grid on
legend('零点','极点')
title('零极点分布图')
(由于系统所有极点在单位圆上,则系统稳定)
从时域看:
程序五:
%稳定性判断
a=[1 -1.8237 0.9801];
b=[1/100.49 0 -1/100.49];
n=0:300;
x1=uDT(n);
y1=filter(b,a,x1);
stem(n,y1,'fill''b'),grid on
xlabel('n'),title('系统响应y1(n)')
(由于系统输出趋于零,则系统稳定)
(2) 给定输入信号,求出系统的输出响应,画出其波形图如下:
程序六:
%差分方程对应的系统函数
a=[1 -1.8237 0.9801];
b=[1/100.49 0 1/100.49];
n=0:30;
subplot(211)
x1=uDT(n);
y1=filter(b,a,x1);
stem(n,y1,'fill','g'),grid on
xlabel('n'),title('系统响应y1(n)')
subplot(212)
x2=sin(0.014.*n)+sin(0.4.*n);
y2=filter(b,a,x2);
stem(n,y2,'fill','r'),grid on
xlabel('n'),title('系统响应y2(n)')
参考文献:
[1] 吴礼斌,李伯年,数学实验与建模 北京,国防工业出版社2007
[2] 张威 MATLAB基础与编程入门(第二版)西安, 西安电子科技大学 2008
[3] 高西全,丁玉美,数字信号处理(第三版)西安,西安电子科技大学 2008
[4] Vinay K Lngle,John G Proakis.数字信号处理及其MATLAB实现 陈怀琛 王朝英,高西全, 译.北京:电子工业出版社,1988