信号与系统MATLAB实验(教师版) 下载本文

式中,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