离散LSI系统分析Word文件下载.docx
《离散LSI系统分析Word文件下载.docx》由会员分享,可在线阅读,更多相关《离散LSI系统分析Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
(2.2)
系统函数
反映了系统响应和激励间的关系。
一旦上式中
,
的数据确定了,系统的性质也就确定了。
特别注意
必须进行归一化处理,即
。
对于复杂信号激励下的线性系统,可以将激励信号在时域中分解为单位序列或单位阶跃序列的线性叠加,把这些单元激励信号分别加于系统求其响应,然后把这些响应叠加,即可得到复杂信号作用于系统的零状态响应。
因此,求解系统的单位序列响应和单位阶跃响应尤为重要。
由图2-1可以看出一个离散LSI系统响应与激励的关系。
图2-1离散LSI系统响应与激励的关系
(1)单位序列响应(单位响应)
单位响应
是指离散线性时不变系统在单位序列
激励下的零状态响应,因此
满足线性常系数差分方程(2.1)及零初始状态,即
,
(2.3)
按照定义,它也可表示为
(2.4)
对于离散线性时不变系统,若其输入信号为
,单位响应为
,则其零状态响应
为
(2.5)
可见,
能够刻画和表征系统的固有特性,与何种激励无关。
一旦知道了系统的单位响应
,就可求得系统对任何输入信号
所产生的零状态响应
MATLAB提供了专门用于求离散系统冲激响应的函数impz(),其调用格式有
[h,n]=impz(b,a)
求解离散系统的单位响应,其中
;
[h,n]=impz(b,a,N)
求解离散系统的单位响应,采样点数由N确定,
impz(b,a):
在当前窗口,用stem(n,h)绘出图形。
(2)单位阶跃响应
单位阶跃响应
是指离散离散时不变系统在单位阶跃序列
激励下的零状态响应,它可以表示为
(2.6)
上式表明,离散线性时不变系统的单位阶跃响应是单位响应的累加和,系统的单位阶跃响应和系统的单位响应之间有着确定的关系,因此,单位阶跃响应也能完全刻画和表征一个线性时不变系统。
MATLAB提供了专门用于求离散系统单位阶跃响应的函数stepz(),其调用格式有
[s,n]=stepz(b,a):
求解离散系统的单位阶跃响应,其中
[s,n]=stepz(b,a,N):
求解离散系统的单位阶跃响应,采样点数由N确定,
stepz(b,a):
在当前窗口,用stem(n,s)绘出图形。
(3)任意激励下的零状态响应
已经知道,离散线性时不变系统可用常系数线性差分方程(2.1)式来描述,Matlab提供的函数dlsim()能对上述差分方程描述的离散线性时不变系统的响应进行仿真,该函数不仅能绘制指定时间范围内的系统响应波形图,而且还能求出系统响应的数值解。
其调用格式有
dlsim(b,a,x):
求解输入序列为x的零状态响应
需要特别强调的是,Matlab总是把由分子和分母多项式表示的任何系统都当作是因果系统。
所以,利用impz(b,a),stepz(b,a),dlsim(b,a,x)函数求得的响应总是因果信号。
同时,卷积和也是线性时不变系统求解零状态响应的重要工具之一。
假设系统的输入信号为
,则系统的零状态响应
可由(2.5)式求解。
Matlab提供了专门用于求离散系统卷积和的函数conv(),其调用格式有
y=conv(x,h):
求解序列x,h的卷积和,若序列x的长度为n1,序列h的长度为n2,卷积和y的长度为n1+n2-1。
这一点需要特别注意,否则,作图时容易造成横纵坐标长度不匹配。
(4)带初始状态的任意激励下的全响应
任意激励下的离散线性时不变系统的全响应为零输入响应和零状态响应之和,表示为
(2.7)
Matlab提供了用于求离散系统全响应的函数filter(),其调用格式有
y=filter(b,a,x):
求解零状态响应;
y=filter(b,a,x,zi):
求解初始条件为zi的系统的全响应,zi向量的长度为max(length(a),length(b))-1,返回值为系统的全响应。
z=filtic(b,a,y,x):
将初始状态转换为初始条件,其中
z=filtic(b,a,):
将初始状态转换为初始条件
2离散线性时不变系统的复频域(Z域)分析
(1)利用Z变换解差分方程
在前面图2-1中表示了离散系统的响应与激励的关系,由图可知,系统的响应既可以用时域的方法求解,也可以用Z域的方法求解。
当已知系统输入序列的Z变换
,系统函数
时,系统响应序列的Z变换可由
求出。
Matlab提供了用于求序列Z变换和Z反变换的函数,其调用格式有
X=ztrans(x):
求无限长序列x的Z变换,返回Z变换的表达式,注意这里x,X都是符号表达式;
x=iztrans(X):
求X(z)的Z反变换x(n),返回Z反变换的表达式,注意这里x,X都是符号表达式;
[r,p,c]=residuez(b,a):
把b(z)/a(z)展开成部分分式;
[b,a]=residuez(r,p,c):
根据部分分式的r、p、c数组,返回有理多项式。
(2)系统的零极点分布与系统因果性和稳定性的关系
因果系统的单位响应
一定满足当
时,
=0,那么其系统函数
的收敛域一定包含
点,即
点不是极点,极点分布在某个圆的圆内,收敛域是圆外区域。
系统稳定要求
,对照z变换定义,系统稳定要求收敛域包含单位圆。
如果系统因果且稳定,收敛域包含
点和单位圆,那么收敛域可表示为:
(2.8)
MATLAB提供了用于求系统零极点的函数,其调用格式有
roots():
利用多项式求根函数来确定系统函数的零极点位置;
roots(a):
求极点位置,a为系统函数
分母多项式所构成的系数向量;
roots(b):
求零点位置,b为系统函数
分子多项式所构成的系数向量;
zplane(b,a):
绘制由行向量b和a构成的系统函数的零极点分布图;
zplane(z,p):
绘制由列向量z确定的零点、列向量p确定的极点构成的零极点分布图。
(3)系统的零极点分布与系统频率响应的关系
将式(2.2)因式分解,得到
(2.9)
式中,
是
的零点,
是其极点。
参数影响频率响应的幅度大小,影响系统特性的是零点
和极点
的分布。
下面采用几何方法研究系统零极点分布对系统频率特性的影响。
将式(2.9)的分子、分母同乘以
,得到:
(2.10)
假设系统稳定,将
代入上式,得到频率响应
(2.11)
设
,由式(2.11)得到
(2.12)
在
平面上,
用一根由零点
指向单位圆(
)上任一点B的向量
表示,同样
用一根由极点
来表示,
和
分别称为零点矢量和极点矢量,用极坐标表示为:
将
表示式代入式(2.12),得到
(2.13)
(2.14)
系统或者信号的频率特性由式(2.13)和式(2.14)确定。
按照式(2.13),知道零极点的分布后,可以很容易地确定零极点位置对系统特性的影响。
当
点转到极点附近时,极点矢量长度最短,因而幅度特性可能出现峰值,且极点愈靠近单位圆,极点矢量长度愈短,峰值愈高愈尖锐。
如果极点在单位圆上,则幅度特性为
,系统不稳定。
对于零点,情况相反,当
点转到零点附近时,零点矢量长度变短,幅度特性将出现谷值,且零点愈靠近单位圆,谷值愈接近零。
当零点在单位圆上时,谷值为零。
综上所述,极点位置主要影响频响的峰值位置及尖锐程度,零点位置主要影响频响的谷值位置及形状。
Matlab提供了专门用于求离散系统频率响应的函数freqz(),其调用格式如下:
[H,w]=freqz(b,a,n):
返回数字系统的n点频率值(复数),这n个点均匀地分布在[0,π]上,系统默认的采样点数目为512点;
[H,f]=freqz(b,a,n,Fs):
用于对
在[0,Fs/2]上等间隔采样n点,采样点频率及相应的频响值分别存放在f和H中。
H=freqz(b,a,w):
在[0,2π]上进行采样,采样频率点由w指定。
H=freqz(b,a,f,Fs):
在[0,Fs]上进行采样,采样频率点由f指定。
freqz(b,a,n):
用于在当前图形窗口中绘制幅频和相频特性曲线。
下面介绍几个实用的函数:
mag=abs(H):
求解系统的绝对幅频响应;
db=20*log10((mag+eps)/max(mag)):
求解系统的相对幅频响应;
pha=angle(H):
求解系统的相频响应;
grd=grpdelay(b,a,w):
求解系统的群延迟。
三、实验内容
1.设某LTI系统的
,输入
,求系统输出
:
主程序如下:
clear;
clf;
clc;
n=[-5:
20];
%设定一个n的观察范围
h=delta(n-5);
x=stepseq(0,-5,20)-stepseq(5,-5,20);
[y,ny]=conv_m(x,n,h,n)
subplot(2,2,1);
stem(n,x);
title('
x[n]'
);
xlabel('
n'
axis([-5,20,0,1.2]);
gridon;
subplot(2,2,2);
stem(n,h);
h[n]'
subplot(2,2,3);
stem(ny,y);
y[n]'
delta.m
functiony=delta(x)
y=(x==0);
stepseq.m的源程序如下:
function[x,n]=stepseq(n0,n1,n2)
ifnargin~=3%nargin(numberofargumentsinput);
“~=”表示不相等
disp('
Usage:
Y=stepseq(n0,n1,n2)'
return;
elseif((n0<
n1)|(n0>
n2)|(n1>
n2))
error('
argumentsmustsatisfyn1<
=n0<
=n2'
)%n0<
n1或者n0>
n2或者n1>
n2
end
n=[n1:
n2];
x=[(n-n0)>
=0];
conv_m.m的源程序如下:
function[y,ny]=conv_m(x,nx,h,nh)
%Modifiedconvolutionroutineforsignalprocessing
%[y,ny]=conv_m(x,nx,h,nh)
%y=convolutionresult
%ny=supportof