式中,b和a分别为系统函数H(s)的分子和分母多项式的系数向量。
(j?)如果已知系统函数H(s),求系统的单位冲激响应h(t)和频率响应H可以用以前介绍过的impulse和freqs函数。 例6-2 已知系统函数为 H(s)=1 32s?2s?2s?1(j?)试画出其零极点分布图,求系统的单位冲激响应h(t)和频率响应H,并判断系统
是否稳定。
解:其MATLAB程序如下: num=[1]; den=[1,2,2,1]; sys=tf(num,den); figure(1);pzmap(sys); t=0:0.02:10;
h=impulse(num,den,t); figure(2);plot(t,h)
title('Impulse Response') [H,w]=freqs(num,den); figure(3);plot(w,abs(H)) xlabel('\\omega')
title('Magnitude Response')
3.用MATLAB进行Laplace正、反变换
MATLAB的符号数学工具箱提供了计算Laplace正、反变换的函数Laplace和ilaplace,其调用格式为
F?laplace(f)
f?ilaplace(F)上述两式右端的f和F分别为时域表示式和s域表示式的符号表示,可以应用函数sym实现,其调用格式为
S=sym(A)
式中,A为待分析表示式的字符串,S为符号数字或变量。 例6-3 试分别用Laplace和ilaplace函数求 (1)f(t)?esin(at)u(t)的Laplace变换;
?ts2(2)F(s)?2的Laplace反变换。
s?1解:(1)其程序为 f=sym('exp(-t)*sin(a*t)'); F=laplace(f) 或
syms a t
F=laplace(exp(-t)*sin(a*t)) (2)其程序为
25
F=sym('s^2/(s^2+1)'); ft=ilaplace(F) 或 syms s
ft= ilaplace(s^2/(s^2+1)) 4.离散系统零极点图
离散系统可以用下述差分方程描述:
?ay(k?i)??bii?0m?0NMmf(k?m)
Y(z)b0?b1z?1?...?bMz?MZ变换后可得系统函数:H(z)? ?F(z)a0?a1z?1?...?aNz?N用MATLAB提供的root函数可分别求零点和极点,调用格式是
p=[a0,a1…an],q=[b0,b1…bm,0,0…0], 补0使二者维数一样。画零极点图的方法有多种,可以用MATLAB函数[z,p,k]=tf2zp(b,a)和zplane(q,p),也可用plot命令自编一函数ljdt.m,画图时调用。
function ljdt(A,B)
% The function to draw the pole-zero diagram for discrete system
p=roots(A); %求系统极点 q=roots(B); %求系统零点 p=p'; %将极点列向量转置为行向量 q=q'; %将零点列向量转置为行向量 x=max(abs([p q 1])); %确定纵坐标范围 x=x+0.1; y=x; %确定横坐标范围 clf hold on
axis([-x x -y y]) %确定坐标轴显示范围 w=0:pi/300:2*pi; t=exp(i*w); plot(t) %画单位园 axis('square') plot([-x x],[0 0]) %画横坐标轴 plot([0 0],[-y y]) %画纵坐标轴 text(0.1,x,'jIm[z]') text(y,1/10,'Re[z]')
plot(real(p),imag(p),'x') %画极点 plot(real(q),imag(q),'o') %画零点 title('pole-zero diagram for discrete system') %标注标题 hold off
例6-4 求系统函数零极点图H(z)?
a=[3 -1 0 0 0 1];
26
z?1 543z?z?1
b=[1 1]; ljdt(a,b) p=roots(a) q=roots(b) pa=abs(p)
5.离散系统的频率特性
离散系统的频率特性可由系统函数求出,既令z?ej?,MATLAB函数freqz可计算频率
特性,调用格式是:
[H,W]=freqz(b,a,n),b和a是系统函数分子分母系数,n是0-?范围 n个等份点,默认
值512,H是频率响应函数值,W是相应频率点;
[H,W]=freqz(b,a,n,’whole’), n是0-2?范围 n个等份点; freqz(b,a,n),直接画频率响应幅频和相频曲线;
例6-5 系统函数H(z)?z?0.5
运行如下语句,可得10个频率点的计算结果 A=[1 0]; B=[1 -0.5];
[H,W]=freqz(B,A,10)
继续运行如下语句,可将400个频率点的计算结果用plot语句画幅频和相频曲线 B=[1 -0.5]; A =[1 0];
[H,w]=freqz(B,A,400,'whole'); Hf=abs(H); Hx=angle(H); clf
figure(1) plot(w,Hf)
title('离散系统幅频特性曲线') figure(2) plot(w,Hx)
title('离散系统相频特性曲线')
还可用freqz语句直接画图,注意区别 A=[1 0]; B=[1 -0.5]; freqz(B,A,400)
例6-6 用几何矢量法,自编程序画频率响应
z原理:频率响应H(ej??(e??qjMj))?j?1N?(e??p)jii?1
27
编程流程:定义Z平面单位圆上k个频率等分点;求出系统函数所有零点和极点到这些等分点的距离;求出系统函数所有零点和极点到这些等分点的矢量的相角;求出单位圆上各 频率等分点的
H(ej?)和?(?)画指定范围内的幅频与相频。若要画零极点图,可调用ljdt.m函数。 function dplxy(k,r,A,B)
%The function to draw the frequency response of discrete system p=roots(A); %求极点 q=roots(B); %求零点 figure(1) ljdt(A,B) %画零极点图 w=0:l*pi/k:r*pi; y=exp(i*w); %定义单位圆上的k个频率等分点 N=length(p); %求极点个数 M=length(q); %求零点个数 yp=ones(N,1)*y; %定义行数为极点个数的单位圆向量 yq=ones(M,1)*y; %定义行数为零点个数的单位圆向量 vp=yp-p*ones(1,r*k+1); %定义极点到单位圆上各点的向量 vq=yq-q*ones(1,r*k+1); %定义零点到单位圆上各点的向量 Ai=abs(vp); %求出极点到单位圆上各点的向量的模 Bj=abs(vq); %求出零点到单位圆上各点的向量的模 Ci=angle(vp); %求出极点到单位圆上各点的向量的相角 Dj=angle(vq); %求出零点到单位圆上各点的向量的相角 fai=sum(Dj,1)-sum(Ci,1); %求系统相频响应 H=prod(Bj,1)./prod(Ai,1); %求系统幅频响应 figure(2) plot(w,H); %绘制幅频特性曲线 title('离散系统幅频特性曲线') xlabel('角频率') ylabel('幅度') figure(3) plot(w,fai) title('离散系统的相频特性曲线') xlabel('角频率') ylabel('相位')
5/4(1?z?1)已知系统函数H(z)?,画频率响应和零极点图。 ?11?1/4zA=[1 -1/4]; B=[5/4 -5/4];
dplxy(500,2,A,B) %绘制系统2π频率范围内500个频率点的幅频和相频特性曲线
及零极点图
28
三、上机实验内容
1.验证实验原理中所述的相关程序; 2.求信号f(t)?te?3tu(t)的拉普拉斯变换
s3?5s2?9s?73.求函数F(s)?的反变换 2s?3s?24.已知连续系统的系统函数如下,试用MATLAB绘制系统的零极点图,并根据零极点图判断系统的稳定性
s2?s?2 H(s)=3 23s?5s?4s?6
5.系统函数是
1?5z?5z
?1?2?z?3
求频率响应。
29