MATLAB信号与系统分析(三)——连续信号与系统的复频域分析及MATLAB实现
一、系统的拉普拉斯变换和反变换
1、MATLAB函数
F=laplace(f) %求拉氏变换
f=ilaplace(F) %求拉氏反变换
2、例子
clear all;clc;close all f=sym('exp(-t)*sin(a*t)*heaviside(t)') F=laplace(f) %求拉氏变换 F=sym('s^2/(s^2+1)') f=ilaplace(F) %求拉氏反变换
二、利用部分分式展开求解拉氏反变换(数学表达式):
1、MATLAB函数
[r,p,k]=residue(num,den)
%r为所得部分分式展开式的系数向量
%p为极点
%k为直流分量
2、例子
%shiyan3_2 用部分分式展开法求解拉氏反变换 clear all;clc;close all num=[1 2];%分母多项式的系数向量,从高次幂往低次幂排列 den=[1 4 3 0];%分子多项式的系数向量,从高次幂往低次幂排列,不要忘记该补零的补零值 [r,p,k]=residue(num,den); %用esidue函数进行展开% f=0; syms t; for i=1:length(p) f=f+r(i)*exp(p(i)*t); end f
三、 系统的零极点分布及其稳定性
1、稳定性的条件,系统的极点位于零极点图的左半平面。
2、利用matlab计算h(s)的零极点并分析系统稳定性。
3、画极点的例子
%shiyan3_3 求H(s)=(s-1)/(s^2+2s+2)的零极点及其分布图 %采用roots和plot函数 clear all ; clc; close all; b=[1,-1]; a=[1 2 2]; zs=roots(b);ps=roots(a); figure(1) plot(real(zs),imag(zs),'o',real(ps),imag(ps),'kx','markersize',12); axis([-2,2,-2,2]);grid on;legend('零点','极点') %利用pole和zero函数 num=[1,-1]; den=[1,2,2]; H = tf(num,den);%采用tf函数获得LTI系统模型sys zs=zero(H);ps=pole(H); figure(2) plot(real(zs),imag(zs),'o',real(ps),imag(ps),'kx','markersize',12); axis([-2,2,-2,2]);grid on;legend('零点','极点') %采用pzmap函数 num=[1,-1]; den=[1,2,2]; H = tf(num,den);%采用tf函数获得LTI系统模型sys figure(3) pzmap(H); %采用tf2zp和zplane函数 A=[1,2,2]; B=[1,-1]; figure(4) [z,p]=tf2zp(B,A) zplane(z,p)
4、计算h(s)的零极点并分析系统稳定性
四、系统的零极点分布与系统冲激响应时域特性(P294)
1、例子
clear all;clc;close all; a=[1,1,16.25]; b=[1]; impulse(b,a,5)
五、连续系统的频率响应
1、MATLAB提供了专门对连续系统频率响应H(jw)进行分析的函数freqs(),该函数可以求出系统频率响应的数值解,并可绘出系统的幅频和相频响应曲线
2、例子:
clear all;clc;close all; b=[1]; a=[0.08 0.4 1]; [h,w]=freqs(b,a,100) h1=abs(h); %求幅频 h2=angle(h); %求相频 figure(1) subplot(211); plot(w,h1);grid,xlabel('角频率(W)');ylabel('幅度');title('H(jw)的幅频特性'); subplot(212); plot(w,h2*180/pi);grid,xlabel('角频率(w)');ylabel('相位(度)');title('H(jw)的相频特性'); figure(2) freqs(b,a)
3、由连续系统零极点分布分析系统的频率特性
由连续系统零极点分布求系统的频率特性的步骤:
定义包含系统所有零点&极点的行向量z&列向量y
定义绘制系统频率响应曲线的频率起始值f1&终止值f2、频率取样间隔k(频率的变化步长),并产生频率等分点向量f;
求出系统所有零点&极点到这些等分点的距离;
l求出系统所有零点&极点到这些等分点的矢量的相角;
根据(1)式&(2)式求出f1到f2频率范围内各频率等分点的 & 的值
绘制f1到f2频率范围内的幅频响应&相频响应曲线
function pz_plxy(f1,f2,k,p,z) %根据系统零极点分布绘制系统频率响应曲线程序 %f1、f2:绘制频率响应曲线的频率范围(即频率起始和终止点,单位为赫兹) %p、z:系统函数极点和零点位置行向量 %k:绘制频率响应曲线的频率取样间隔 p=p'; %变成列向量 z=z'; f=f1:k:f2; %定义绘制系统频率响应曲线的频率范围 w=f*(2*pi); y=i*w; %虚数轴上 n=length(p); m=length(z); if n==0 %如果系统无极点 yq=ones(m,1)*y; vq=yq-z*ones(1,length(w)); bj=abs(vq); bw=angle(vq); ai=1; aw=0; elseif m==0 %如果系统无零点 yp=ones(n,1)*y; vp=yp-p*ones(1,length(w)); aw=angle(vp); ai=abs(vp); bj=1; bw=0; else yp=ones(n,1)*y; yq=ones(m,1)*y; vp=yp-p*ones(1,length(w)); vq=yq-z*ones(1,length(w)); ai=abs(vp); aw=angle(vp); bj=abs(vq); bw=angle(vq) end figure(1) Hw=prod(bj,1)./prod(ai,1); plot(f,Hw); title(' 系统幅频响应曲线') xlabel(' 频率w(单位:赫兹)') ylabel('H(jw)') figure(2) Anglew=sum(bw,1)-sum(aw,1); plot(f,Anglew); title(' 系统相频响应曲线') xlabel(' 频率w(单位:rad)') ylabel('angle(jw)')