信号与系统实验指导书
《信号与系统》实验指导书
重庆科技学院 电气与信息工程学院
2014年3月
目 录
实验一 连续时间信号的MATLAB 表示
实验二 连续时间LTI 系统的时域分析
实验三
实验四
实验五
连续时间LTI 系统的频率特性及频域分析 连续时间LTI 系统的零极点分析 典型离散信号及其MATLAB 实现
实验一 连时间信号的MATLAB 表示
实验目的
1.掌握MATLAB 语言的基本操作,学习基本的编程功能;
2.掌握MATLAB 产生常用连续时间信号的编程方法;
3.观察并熟悉常用连续时间信号的波形和特性。
实验原理
1. 连续信号MATLAB 实现原理
从严格意义上讲,MATLAB 数值计算的方法并不能处理连续时间信号。然而,可用连续信号在等时间间隔点的取样值来近似表示连续信号,即当取样时间间隔足够小时,这些离散样值能够被MATLAB 处理,并且能较好地近似表示连续信号。
MATLAB 提供了大量生成基本信号的函数。比如常用的指数信号、正余弦信号等都是MATLAB 的内部函数。为了表示连续时间信号,需定义某一时间或自变量的范围和取样时间间隔,然后调用该函数计算这些点的函数值,最后画出其波形图。
2. 典型信号的MATLAB 表示
(1) 实指数信号:f (t ) =Ke at ,式中K ,a 为实数。在MATLAB 中可以利用exp()函数实现,其语句格式为:y=K*exp(a*t)。
(2) 正弦信号:f (t ) =K sin(ωt +ϕ) 或f (t ) =K cos(ωt +ϕ) ,其中K 为振幅,ω是角频率;φ是初相位。在MATLAB 中可以利用sin()或cos()函数实现,其语句格式为K *sin(ω*t+phi),K *cos(ω*t+phi)。
(3) 单位阶跃信号:单位阶跃信号定义为ε(t ) =⎨⎧⎪1
⎪⎩0(t >0),单位阶跃信号在(t
“( t >=0)”产生。MA TLAB 表达式“y = ( t >=0)”的含义就是t ≥ 0时y =1,而当t
此外,也可在MATLAB 的work 目录下创建uCT 的M 文件,其MATLAB 源程序为
function f=uCT(t)
f=(t>=0);
保存为uCT.m 后,就可以调用该函数。 自定义函数
注意,在此定义的uCT 函数是阶跃信号数值表示方法,因此在数值计算中我们将调用uCT 函数。而在MA TLAB 的MAPLE 内核中,将Heaviside 函数定义为阶跃信号符号表达式,在符号运算过程中,若要调用它必须用sym 定义后,才能实现。
(4) 复指数信号:f (t ) =Ke st =Ke (σ+j ω) t =Ke σt cos(ωt ) +jKe σt sin(ωt ) ,其中,s =σ+jω是复变量;σ、
ω为实数。在MATLAB 中可以利用exp()函数表示复指数信号,MA TLAB 中默认变量i 为虚部单位,求取实部用real()函数,求取虚部用imag()函数,求取模用abs()函数,求取相角用angle()函数。
(5) 抽样信号:Sa (t ) =sin(t ) /t ,在MA TLAB 中用与Sa(t ) 类似的sinc (t ) 函数表示,定义为sin c (t ) =sin(πt ) /(πt ) 。
⎧1⎪(6) 矩形脉冲信号:g τ(t ) =⎨⎪⎩0
冲信号,width 的默认值为1。 (t τ/2)式为y=rectpuls(t,width),该函数用于产生一个幅度为1、宽度为width ,且以t=0为对称轴的矩形脉
周期性矩形波信号或方波在MA TLAB 中可用square 函数产生,其语句格式为square(t,DUTY)。该函数用于产生一个周期为2π、幅值为±1的周期性方波信号,其中,DUTY 参数用来表示信号的占空比DUTY%,即在一个周期内脉冲宽度(正值部分)与脉冲周期的比值。占空比默认值为0.5。
(7) 三角波脉冲信号:在MA TLAB 中可用tripuls()函数产生,其语句格式为y=tripuls(t,width,skew),该函数用于产生一个幅度为1、宽度为width ,且以t=0为中心左右各展开width/2大小、斜度为skew 的三角波。width 的默认值为1,skew 的取值范围在-1~+1之间。一般最大幅度1出现在t=(width/2)×skew 的横坐标位置,默认时skew=0,此时产生对称三角波。
(8) 下面的函数也可以产生特定的信号
y=fliplr(t)——信号的翻转;
y=sawtooth(t,width)——产生锯齿波信号。
实验内容
1. 实例分析与验证
根据以上典型信号的MA TLAB 函数,分析与验证下列典型信号MA TLAB 程序,并实现各信号波形图的显示,连续信号的图形显示使用连续二维图函数plot()。
(1) 正弦信号:用MA TLAB 命令产生正弦信号2sin(2π+π/4) ,并会出时间0≤ t ≤3的波形图。 程序如下:
K=2;w=2*pi ;phi=pi/4;
t=0:0.01:3;
ft=K*sin(w*t+phi);
plot(t,ft),grid on;
axis([0,3,-2.2,2.2])
title('正弦信号')
(2) 抽样信号:用MA TLAB 中的sinc(t)函数命令产生抽样信号Sa(t),并会出时间为-6π≤t ≤6π的波形图。
程序如下:
t=-6*pi:pi/100:6*pi;
plot(t,ft),grid on;
axis([-20,20,-0.5,1.2])
title('抽样信号')
(3) 矩形脉冲信号:用MA TLAB 中y=rectpuls(t,width)函数命令画出下列矩形脉冲信号的波形图
⎧2f (t ) =⎨⎩0
程序如下:
t=-0.5:0.01:3;
t0=0.5;width=1;
ft=2*rectpuls(t-t0,width);
plot(t,ft),grid on;
axis([-0.5,3,-0.2,2.2])
title('矩形脉冲信号') (0≤t ≤1) (t 1)
(4) 单位阶跃信号:用MA TLAB 命令“y=(t>=0)”绘出-1≤ t ≤ 5单位阶跃信号ε(t ) 。
程序如下:
t=-1:0.01:5;
ft=(t>=0);
plot(t,ft),grid on;
axis([-1,5,-0.5,1.5]);
title('单位阶跃信号')
也可通过定义阶跃函数来实现,
function f=uCT(t);
f=(t>=0);
保存为uCT.m 文件,上面实现阶跃信号的程序变为
t=-1:0.01:5;
ft=uCT(t);
plot(t,ft),grid on;
axis([-1,5,-0.5,1.5]);
title('单位阶跃信号')
2. 实践编程
(1) 复指数信号:用MATLAB 命令画出0≤ t ≤ 3复指数信号f (t ) =2e (-1.5+j 10) t 的实部、虚部、模及相角随时间变化的曲线,并观察其时域特性。
程序如下:
k=2;a=-1.5;b=10;
ft=k*exp((a+i*b)*t);
subplot(2,2,1);plot(t,real(ft));title('实部');axis([0,3,-2,2]);grid on;
subplot(2,2,2);plot(t,imag(ft));title('虚部');axis([0,3,-2,2]);grid on;
subplot(2,2,3);plot(t,abs(ft));title('模');axis([0,3,0,2]);grid on;
subplot(2,2,4);plot(t,angle(ft));title('相角');axis([0,3,-4,4]);grid on;
(2) 用MATLAB 中y=square(t,DUTY)产生频率为10Hz 、占空比为30%的周期方波信号。
程序如下:
t=0:0.001:3;
y=square(2*pi*10*t,30);
plot(t,y);grid on;
axis([0,0.3,-1.2,1.2]);
title('周期方波信号')
(3) 用上面定义的uCT 阶跃函数实现幅度为1、宽度为1的门函数g (t ) 。
程序如下:
t=-1:0.01:1;
ft=uCT(t+0.5)-uCT(t-0.5);
plot(t,ft);grid on;
axis([-1,1,-0.2,1.2])
title('门函数')
实验分析
观察实验结果,掌握、分析典型的连续时间信号波形特点。
实验总结
总结实验认识、过程、效果、问题、收获、体会、意见和建议。
实验二 连续时间LTI 系统的时域分析
实验目的
1.运用MATLAB 符号求解连续系统的零输入响应和零状态响应;
2.运用MATLAB 数值求解连续系统的零状态响应;
3.运用MATLAB 求解连续系统的冲激响应和阶跃响应;
4.运用MATLAB 卷积积分法求解系统的零状态响应。
实验原理
1. 连续时间系统零输入响应和零状态响应的符号求解
LTI 连续系统可用线性常系数微分方程描述,即
∑a y i
i =0N (i ) (t ) =∑b j f (j ) (t ) j =0M
MATLAB 符号工具箱提供了dsolve 函数,可实现常系数微分方程的符号求解,其调用格式为
dsolve(„eq1,eq2, …‟, ‟cond1,cond2, …‟, ‟v ‟)
其中,参数eq1,eq2、…表示各微分方程,它与MATLAB 符号表达式的输入基本相同,微分或导数的输入是用Dy 、D2y 、D3y 、…来表示y 的一阶导数y '、二阶导数y ''、三阶导数y '''、…;参数cond1、cond2、…表示各初始条件或起始条件;参数v 表示自变量,默认为是变量t 。可利用dsolve 函数来求解系统微分方程的零输入响应和零状态响应,进而求出完全响应。
2. 连续时间系统零状态响应的数值求解
实际工程中用的较多求解微分方程的方法是数值求解。零输入响应的求解可通过函数initial 来实现,initial 函数中的参量必须是状态变量所描述的系统模型。对于零状态响应,MA TLAB 控制系统工具箱提供了对LTI 系统的零状态响应进行数值仿真的函数lsim ,该函数可求解零初始条件下微分方程的数值解,语句格式为
y=lsim(sys,f,t)
其中,t 表示计算系统响应的时间抽样点向量;f 是系统的输入信号向量;sys 表示LTI 系统模型,用来表示微分方程、差分方程或状态方程。在求解微分方程时,sys 是由MA TLAB 的tf 函数根据微分方程系数生成的系统函数对象,其语句格式为
sys=tf(b,a)
其中,b 和a 分别为微分方程右端和左端的系数向量。注意,如果微分方程的左端或右端表达
式中有缺项,则其向量a 或b 中的对应元素应为0,不能省略不写,否则会出错。
3. 连续时间系统冲激响应和阶跃响应的求解
在MA TLAB 中,对于连续LTI 系统的冲激响应和阶跃响应的数值解,可分别用控制系统工具箱提供的函数impulse 和step 来求解。其语句格式为
y=impulse(sys,t)
y=step(sys,t)
其中,t 表示计算系统响应的时间抽样点向量,sys 表示LTI 系统模型。
4. 利用卷积积分法求系统的零状态响应
由卷积积分公式可以得到,LTI 系统对于任意输入信号的零状态响应,可由系统的单位冲激响应与输入信号的卷积积分得到。
预先建立连续时间信号卷积运算的函数ctsconv.m ,其MA TLAB 源程序为
function[f,t]=ctsconv(f1,f2,t1,t2,dt) % f1和f2分别是参与计算的两个时间信号
f=conv(f1,f2); % t1,t2是两信号时间变量,dt 为时间采样间隔
f=f*dt;
ts=min(t1)+min(t2);
te=max(t1)+max(t2);
t=ts:dt:te;
subplot(221)
plot(t1,f1);grid on;
axis([min(t1),max(t1),min(f1)-abs(min(f1)*0.2),max(f1)+abs(max(f1)*0.2)])
title('f1(t)');xlabel('t')
subplot(222)
plot(t2,f2);grid on;
axis([min(t2),max(t2),min(f2)-abs(min(f2)*0.2),max(f2)+abs(max(f2)*0.2)])
title('f2(t)');xlabel('t')
subplot(212)
plot(t,f);grid on;
axis([min(t),max(t),min(f)-abs(min(f)*0.2),max(f)+abs(max(f)*0.2)])
title('f(t)= f1(t)* f2(t)');xlabel('t')
在实际计算中,调入即可应用。
实验内容
1. 实例分析与验证
(1) 连续时间系统零输入响应和零状态响应的符号求解
试用MATLAB 命令求解微分方程y ''(t ) +3y '(t ) +2y (t ) =x '(t ) +3x (t ) ,当输入x (t ) =e -3t ε(t ) ,起始条件为y (0-) =1、y '(0-) =2时系统的零输入响应、零状态响应及完全响应。
源程序为:
eq='D2y+3*Dy+2*y=0';
cond='y(0)=1,Dy(0)=2';
yzi=dsolve(eq,cond); yzi=simplify(yzi)
运行结果:
yzi =
-3*exp(-2*t)+4*exp(-t)
eq1='D2y+3*Dy+2*y=Dx+3*x';
eq2='x=exp(-3*t)*Heaviside(t)';
cond='y(-0.001)=0,Dy(-0.001)=0';
yzs=dsolve(eq1,eq2,cond);yzs=simplify(yzs.y)
运行结果:
yzs =
heaviside(t)*(-exp(-2*t)+exp(-t))
yt=simplify(yzi+yzs)
运行结果:
yt =
-3*exp(-2*t)+4*exp(-t)-exp(-2*t)*heaviside(t)+exp(-t)*heaviside(t)
subplot(311)
ezplot(yzi,[0,8]);grid on;
xlabel('t')
title('零输入响应')
subplot(312)
ezplot(yzs,[0,8]);grid on
xlabel('t')
title('零状态响应')
subplot(313)
ezplot(yt,[0,8]);grid on
xlabel('t')
title('完全响应')
(2) 连续时间系统零状态响应的数值求解
试用MA TLAB 数值求解微分方程y ''(t ) +3y '(t ) +2y (t ) =x '(t ) +3x (t ) ,当输入x (t ) =e -3t ε(t ) 时系统的零状态响应。
源程序为:
ts=0;te=8;dt=0.01;
sys=tf([1,3],[1,3,2]);
t=ts:dt:te;
f=exp(-3*t).*uCT(t);
y=lsim(sys,f,t);
plot(t,y),grid on;
axis([0 8 -0.02 0.27])
xlabel('t(s)'),ylabel('y(t)')
title('零状态响应')
(3) 连续时间系统冲激响应和阶跃响应的求解
已知某LTI 系统的微分方程y ''(t ) +2y '(t ) +32y (t ) =f '(t ) +16f (t ) ,试用MATLAB 命令绘出0≤t ≤4范围内系统的冲激响应h (t ) 和阶跃响应s (t ) 。
源程序为:
t=0:0.001:4;
sys=tf([1,16],[1,2,32]);
h=impulse(sys,t);
s=step(sys,t);
subplot(211);plot(t,h),grid on
xlabel('t(s)'),ylabel('h(t)')
title('冲激响应')
subplot(212);plot(t,s),grid on
xlabel('t(s)'),ylabel('s(t)')
title('阶跃响应')
(4) 利用卷积积分法求系统的零状态响应
=f '(t +) 16f (t ,其中,) 已知某LTI 系统的微分方程y ''(t ) +2y '(t ) +32y (t ) f (t ) =e -2t 。试用
MATLAB 卷积积分方法绘出系统零状态响应y (t ) 的波形图。
程序如下:
dt=0.01;t1=0:dt:4;
f1=exp(-2*t1);
t2=t1;
sys=tf([1,16],[1,2,32]);
f2=impulse(sys,t2);
[t,f]=ctsconv(f1,f2,t1,t2,dt);
2. 实践编程
(1) 已知系统的微分方程和激励信号为y ''(t ) +4y '(t ) +4y (t ) =f '(t ) +3f (t ) ,f (t ) =e -t ε(t ) ,试用MA TLAB 命令绘出系统零状态响应的时域仿真波形图。
源程序为:
ts=0;te=8;dt=0.01;
sys=tf([1,3],[1,4,4]);
t=ts:dt:te;
f=exp(-t).*uCT(t);
y=lsim(sys,f,t);
plot(t,y),grid on;
xlabel('t(s)'),ylabel('y(t)')
title('零状态响应')
(2) 已知系统的微分方程为y ''(t ) +3y '(t ) +2y (t ) =f (t ) ,试用MA TLAB 命令求系统冲激响应和阶跃响应的数值解,并绘出冲激响应和阶跃响应的时域仿真波形图。
源程序为:
t=0:0.001:4;
sys=tf([1],[1,3,2]);
h=impulse(sys,t);
s=step(sys,t);
subplot(211)
plot(t,h),grid on
xlabel('t(s)'),ylabel('h(t)')
title('冲激响应')
subplot(212)
plot(t,s),grid on
xlabel('t(s)'),ylabel('s(t)')
title('阶跃响应')
实验分析
观察实验结果,掌握、分析连续时间系统零状态响应和零输入响应的求解方法。
实验总结
总结实验认识、过程、效果、问题、收获、体会、意见和建议。
实验三 连续时间LTI 系统的频率特性及频域分析
实验目的
1.运用MATLAB 分析连续系统的频率特性;
2.运用MATLAB 进行连续系统的频域分析。
实验原理
1. 连续时间LTI 系统的频率特性
一个连续时间LTI 系统的数学模型通常用常系数线性微分方程来描述,即
d n y d y d n x d x a n n +⋅⋅⋅+a 1+a 0y (t ) =b n n +⋅⋅⋅+b 1+b 0x (t ) d t d t d t d t
对上式两边取傅里叶变换,并根据傅里叶变换的时域微分特性,得到系统的频率响应为
Y (ω) b m (j ω) m +⋅⋅⋅+b 1(j ω) +b 0 H (ω) ==X (ω) a n (j ω) n +⋅⋅⋅+a 1(j ω) +a 0
MATLAB 信号处理工具箱提供的freqs 函数可直接计算系统的频率响应的数值解,其语句格式为 H=freqs(b,a,w)
其中,b 和a 分别表示H (w ) 的分子和分母多项式的系数向量;w 为系统频率响应的频率范围,其一般形式为w 1:p : w2,w 1为频率起始值,w 2为频率终止值,p 为频率取样间隔。H 返回w 所定义的频率点上系统响应频率响应的样值。注意,H 返回的样值可能为包含实部和虚部的复数。因此,如果想得到系统的幅频特性或相频特性,还需利用abs 和angle 函数来分别求得。
2. 连续时间LTI 系统的频域分析
连续LTI 系统的频域分析法,也称为傅里叶变换分析法。该方法是基于信号频谱分析的概念,讨论信号作用于线性系统时在频域中求解响应的方法。傅里叶分析法的关键是求系统的频率响应。傅里叶分析法主要用来分析系统的频率响应特性,或分析输出信号的频谱,也可用来求解正弦信号作用下的稳态响应。
对于周期信号激励而言,可首先将周期信号进行傅里叶级数展开,然后求系统在各傅里叶级数分解的频率分量作用下系统的稳态响应分量,再由系统的线性性质将这些稳态响应分量叠加,从而得出系统总的响应。该方法的理论基础是基于正弦信号作用下系统的正弦稳态响应。
对于正弦激励信号A sin(ω0t +ϕ) ,当经过系统H (ω) ,其稳态响应为
y zs (t ) =A sin(ω0t +ϕ) H (ω0) =A H (ω0) sin(ω0t +ϕ+angle (H (ω0)))
实验内容
1. 实例分析与验证
(1) 已知一个连续时间LTI 系统的微分方程为
y ' ' ' (t ) +10y ' ' (t ) +8y ' (t ) +5y (t ) =13x ' (t ) +7x (t )
求系统的频率响应,并用MATLAB 绘出其幅频特性和相频特性图。
解:对微分方程取傅里叶变换,得
Y (w )[(jw ) 3+10(jw ) 2+8(jw ) +5]=X (w )[13(jw ) +7]
因此,频率响应为
H (w ) =
MATLAB 源程序:
w=-3*pi:0.01:3*pi;
b=[13,7];a=[1,10,8,5];
H=freqs(b,a,w);
subplot(211)
plot(w,abs(H)),grid on Y (w ) 13(jw ) +7 =X (w ) (jw ) 3+10(jw ) 2+8(jw ) +5
xlabel('\omega(rad/s)'),ylabel('|H(\omega)|')
title('H(w)的频率特性')
subplot(212)
plot(w,angle(H)),grid on
xlabel('\omega(rad/s)'),ylabel('\phi(\omega)|')
title('H(w)的相频特性')
(2) 如图为RC 低通滤波器电路,在输入端加入矩形脉冲u 1(t ) 。利用傅里叶分析法求输出端电压u 2(t ) 。
R
20k Ω u (t ) 1 10μF C u t ) 2(
解:RC 低通滤波器的频率响应为
H (w ) =
αα+jw 其中α=1=5 RC
激励信号的傅里叶变换为
U 1(w ) =(1-e -jw )/jw
因此,响应的傅里叶变换为
5(1-e -j ω) 5(1-e -j ω) U 2(w ) =H (w ) U 1(w ) ==2j ω(5+j ω) 5j ω-ω
MATLAB 源程序:
w=-6*pi:0.01:6*pi;
b=[5];a=[1,5];
H1=freqs(b,a,w);
plot(w,abs(H1)),grid on
xlabel('\omega(rad/s)'),ylabel('|H(\omega)|')
title('RC低通滤波电路的幅频特性')
u1t=sym('Heaviside(t)-Heaviside(t-1)');
U1w=simplify(fourier(u1t));
figure
subplot(221),ezplot(u1t,[-0.2,2]),grid on
title('矩形脉冲信号')
xlabel('Time(sec)'),ylabel('u1(t)')
subplot(222),ezplot(abs(U1w),[-6*pi 6*pi]),grid on
title('矩形脉冲的频谱')
xlabel('\omega(rad/s)'),ylabel('X(\omega)')
U2w=sym('5*(1-exp(-i*w))/(5*i*w-w^2)');
u2t=simplify(ifourier(U2w));
subplot(223),ezplot(u2t,[-0.2 2]),grid on
title('响应的时域波形')
xlabel('Time(sec)'),ylabel('u2(t)')
subplot(224),ezplot(abs(U2w),[-6*pi 6*pi]),grid on
title('响应的频谱')
xlabel('\omega(rad/s)'),ylabel('U2(\omega)')
2. 实践编程 设系统的频率响应为H (w ) =
求其稳态响应。
解:MATLAB 源程序: 110t ) ,用MA TLAB ,若外加激励5cos(t ) +2cos(-w +3jw +22
t=0:0.1:20;
w1=1;w2=10;
H1=1/(-w1^2+j*3*w1+2);
H2=1/(-w2^2+j*3*w2+2);
f=5*cos(w1*t)+2*cos(w2*t);
y=5*abs(H1)*cos(w1*t+angle(H1))+2*abs(H2)*cos(w2*t+angle(H2));
subplot(211);
plot(t,f);grid on
ylabel('f(t)'),xlabel('Time(sec)')
title('输入信号的波形')
subplot(212);
plot(t,y);grid on
ylabel('y(t)'),xlabel('Time(sec)')
title('稳态响应的波形')
或者用freqs 函数,程序如下:
t=0:0.01:20;
w1=1;w2=10;
eps=1.0e-03;
w=-6*pi:0.01:6*pi;
b=[1];a=[1,3,2];
H=freqs(b,a,w);
N=length(w);
for i=1:N
if(abs(w(i)-w1)
N1=i;
end
if(abs(w(i)-w2)
N2=i;
end
end
f=5*cos(w1*t)+2*cos(w2*t);
y=5*abs(H(N1))*cos(w1*t+angle(H(N1)))+2*abs(H(N2))*cos(w2*t+angle(H(N2)));
subplot(211);
plot(t,f);grid on
ylabel('f(t)'),xlabel('Time(sec)')
title('输入信号的波形')
subplot(212);
plot(t,y);grid on
ylabel('y(t)'),xlabel('Time(sec)')
title('稳态响应的波形')
实验分析
观察实验结果,掌握、分析连续系统的频率特性。
实验总结
总结实验认识、过程、效果、问题、收获、体会、意见和建议。
实验四 连续时间LTI 系统的零极点分析
实验目的
1.运用MATLAB 求解系统函数的零极点;
2.运用MATLAB 分析系统函数的零极点分布与其时域特性的关系;
3.运用MATLAB 分析系统函数的零极点分布与其系统稳定性的关系。
实验原理
1. 系统函数及其零极点的求解
系统零状态响应的拉普拉斯变换与激励的拉普拉斯变换之比称为系统函数H (s ) ,即
Y (s ) H (s ) ==F (s ) ∑b s j m j ∑a s i
i =0j =0n i b m s m +b m-1s m-1+ +b 1s +b 0=a n s n +a n-1s n-1+ +a 1s +a 0
在连续时间LTI 系统的复频域分析中,系统函数起着十分重要的作用,它反映了系统的固有特性。
系统函数H (s ) 通常是一个有理分式,其分子和分母均为可分解因子形式的多项式,各项因子表明了H (s ) 零点和极点的位置,从零极点的分布情况可确定系统的性质。H (s ) 零极点的计算可应用MATLAB 中的roots 函数,分别求出分子和分母多项式的根即可。
2. 系统函数的零极点的分布与其时域特性的关系
由于系统函数H (s ) 的拉氏反变换即冲激响应h (t ) ,所以H (s ) 的零极点分布对冲激响应h (t ) 有影响。在MA TLAB 中,已知系统函数H (s ) ,系统单位冲激响应h (t ) 的求解可利用impulse 函数。
3. 系统函数的极点分布与系统稳定性的关系
对于连续时间因果LTI 系统,系统函数H (s ) 的极点分布可以给出系统稳定性的结论。因此,只需在MATLAB 中将系统函数H (s ) 的极点分布绘出,即可判定系统的稳定性。
实验内容
1. 实例分析与验证
(1) 已知系统函数为
H (s ) =
试用MATLAB 命令画出其零极点分布图。 s -2 s 2+4s +5
MATLAB 源程序为
b=[1,-2];
a=[1,4,5];
zs=roots(b);
ps=roots(a);
plot(real(zs),imag(zs),'blacko',real(ps),imag(ps),'blackx','markersize',12);
axis([-3,3,-2,2]);grid;
legend('零点',' 极点');
程序中,markersize 为标识符号大小变量,紧随其后的为该变量的值。
在MA TLAB 中,还有一种简捷的方法画系统函数H (s ) 的零极点分布图,即采用pzmap 函数,其语句格式为
pzmap(sys)
其中,sys 表示LTI 系统的模型。LTI 系统模型的定义可通过tf 函数获得,其语句格式为 sys=tf(b,a)
因此,上面程序变为
b=[1,-2];
a=[1,4,5];
sys=tf(b,a);
pzmap(sys);
axis([-3,3,-2,2])
如果要求出零极点的值,可利用MA TLAB 中的pole 函数和zero 函数。例如,以上程序变为 b=[1,-2];
a=[1,4,5];
sys=tf(b,a);
p=pole(sys)
z=zero(sys)
运行结果:
p =
-2.0000 + 1.0000i
-2.0000 - 1.0000i
z =
2
(2) 试用MA TLAB 画出下列系统函数的零极点分布图以及对应的时域单位冲激响应波形,同时分析系统函数极点对时域波形的影响。
H 1(s ) =
MATLAB 源程序为:
b1=[1];
a1=[1 -1];
sys1=tf(b1,a1);
subplot(121)
pzmap(sys1)
axis([-2 2 -2 2])
subplot(122)
impulse(b1,a1)
figure
b2=[1];
a2=[1 -2 50];
sys2=tf(b2,a2);
subplot(121)
pzmap(sys2)
axis([-2 2 -8 8])
subplot(122)
impulse(b2,a2)
figure
b3=[1];
a3=[1 0 1];
sys3=tf(b3,a3);
subplot(121)
pzmap(sys3)
axis([-2 2 -2 2])
subplot(122)
impulse(b3,a3) 111H (s ) = H 2(s ) = 322s -1s +1(s -1)+49
极点对冲激响应波形的主要影响在于:一是冲激响应波形是指数衰减还是指数增长或等幅震荡,主要取决于极点位于s 左半平面还是右半平面或在虚轴上;二是冲激响应波形衰减或增长快慢,主要取决于极点离虚轴距离的远近;三是冲激响应波形震荡的快慢,主要取决于极点离实轴距离的大小。至于系统函数的零点分布则只影响冲激响应函数的幅度和相位,对响应的模式没有影响。
2. 实践编程
(1) 试用MA TLAB 画出下列系统函数的零极点分布图以及对应的时域单位冲激响应波形,并分析系统函数极点对时域波形的影响。
H (s ) =
MATLAB 程序为:
b=[1];
a=[1 2 50];
sys=tf(b,a);
subplot(121)
pzmap(sys)
axis([-2 2 -8 8])
subplot(122)
impulse(b,a)
(2) 已知系统函数为 1(s +1)2+49
s 2+4s +3H (s ) =32 s +s +7s +2
试用MATLAB 命令画出其零极点分布图,并判断该系统是否稳定。
MATMAB 程序为:
b=[1 4 3];
a=[1 1 7 2];
sys=tf(b,a);
pzmap(sys)
实验分析
观察实验结果,分析系统函数零极点的位置与冲激响应波形之间的关系;分析系统函数极点分布与系统稳定性的关系。
实验总结
总结实验认识、过程、效果、问题、收获、体会、意见和建议。
实验五 典型离散信号及其MATLAB 实现
实验目的
1.掌握MATLAB 语言的基本操作,学习基本的编程功能;
2.掌握MATLAB 产生常用离散时间信号的编程方法;
3.掌握MATLAB 计算卷积的方法。
实验原理
1. MATLAB常用离散时间信号
⎧1n =0(1) 单位采样序列:δ(n ) =⎨ 0n ≠0⎩
在MA TLAB 中可以利用zeros()函数实现。
n ≥0⎧1(2) 单位阶跃序列:u (n ) ⎨ 0n
在MA TLAB 中可以利用ones()函数实现。
(3) 正弦序列:x (n ) =A sin(2πfn /Fs +ϕ)
在MA TLAB 中可以利用sin()函数实现。
(4) 复正弦序列:x (n ) =e j ωn
在MA TLAB 中可以利用exp()函数实现。
(5) 指数序列:x (n ) =a n
在MA TLAB 中可以利用x=a.^n命令实现。
(6) 下面的函数也可以产生特定的序列
y=fliplr(x)——信号的翻转;
y=square(x)——产生方波信号;
y=sawtooth(x)——产生锯齿波信号;
y=sinc(x)——产生sinc 函数信号。
2. 离散时间信号的卷积
由于系统的零状态响应是激励与系统的单位脉冲响应的卷积,因此卷积运算在离散时间信号处理领域被广泛应用。离散时间信号的卷积定义为:
y (n ) =x (n ) *h (n ) =
m =-∞∑x (m ) h (n -m ) ∞
可见,离散时间信号的卷积运算是求和运算,因而常称为“卷积和”。
MATLAB 求离散时间信号卷积和的命令为conv ,其语句格式为:
y=conv(x,h)
其中,x 与h 表示离散时间信号值的向量;y 为卷积结果。用MA TLAB 进行卷积和运算时,无法实现无限的累加,只能计算时限信号的卷积。
实验内容
1. 离散信号的产生
离散信号的图形显示使用离散二维柱图函数stem()。编写MATLAB 程序,产生下列典型脉冲序列。
(1) 单位脉冲序列:起点n 0=0,终点n f =10,在n s =3处有一单位脉冲。
(2) 单位阶跃序列:起点n 0=0,终点n f =10,在n s =3前为0,在n s 处及以后均为1(n 0≤n s ≤n f ) 。
(3) 实指数序列:x 3=(0. 75)
(4) 复指数序列:x 4n =e (-0.2+j0.7) n
其MA TLAB 程序如下
n0=0;nf=10;ns=3;
n1=n0:nf;x1=[(n1-ns)==0]; %单位脉冲序列
n2=n0:nf;x2=[(n2-ns)>=0]; %单位阶跃序列
n3=n0:nf;x3=(0.75).^n3; %实指数序列
n4=n0:nf;x4=exp((-0.2+0.7j)*n4); %复指数序列
subplot(2,2,1),stem(n1,x1);
subplot(2,2,2),stem(n2,x2);
subplot(2,2,3),stem(n3,x3);
figure
subplot(2,2,1),stem(n4,real(x4));
subplot(2,2,2),stem(n4,imag(x4));
subplot(2,2,3),stem(n4,abs(x4));
subplot(2,2,4),stem(n4,angle(x4));
2. 离散时间信号的卷积
用MA TLAB 实现两个有限长度序列的卷积运算,参考程序如下。
x=[3 4 0 -2 2 3 5]; %[x,nx]为第一个信号
nx=[-3:3];
h=[1 4 5 6 0 1]; %[h,nh]为第二个信号
nh=[N:N+5]; % N是你的学号最后两位
ny1=nx(1)+nh(1);
ny2=nx(length(x))+nh(length(h));
ny=[ny1:ny2];
y=conv(x,h); %conv(x,h)可以实现两个有限长度序列的卷积 subplot(221),stem(nx,x),grid on;title('f1(n)');
subplot(222),stem(nh,h),grid on;title('f2(n)');
subplot(212),stem(ny,y),grid on;title('f1(n)*f2(n)');
将学号最后两位带入后求出卷积结果。
实验分析
观察实验结果,掌握、分析典型的离散时间信号,分析卷积运算。 实验总结
总结实验认识、过程、效果、问题、收获、体会、意见和建议。