您的当前位置:首页正文

MATLAB仿真实验全部

2024-06-17 来源:汇智旅游网
实用文档

实验一 MATLAB及仿真实验(控制系统的时域分析)

一、实验目的

学习利用MATLAB进行控制系统时域分析,包括典型响应、判断系统稳定性和分析系统的动态特性; 二、预习要点

1、 系统的典型响应有哪些? 2、 如何判断系统稳定性?

3、 系统的动态性能指标有哪些? 三、实验方法

(一) 四种典型响应

1、 阶跃响应:

阶跃响应常用格式:

1、step(sys);其中sys可以为连续系统,也可为离散系统。 2、step(sys,Tn);表示时间围0---Tn。 3、step(sys,T);表示时间围向量T指定。

4、Ystep(sys,T);可详细了解某段时间的输入、输出情况。

2、 脉冲响应:

脉冲函数在数学上的精确定义:f(x)dx1

0f(x)0,t0其拉氏变换为:

f(s)1Y(s)G(s)f(s)G(s)

所以脉冲响应即为传函的反拉氏变换。

脉冲响应函数常用格式: ① impulse(sys); ②

impulse(sys,Tn);

impulse(sys,T); ③ Yimpulse(sys,T)

(二) 分析系统稳定性 有以下三种方法:

1、 利用pzmap绘制连续系统的零极点图; 2、 利用tf2zp求出系统零极点;

3、 利用roots求分母多项式的根来确定系统的极点 (三) 系统的动态特性分析

Matlab提供了求取连续系统的单位阶跃响应函数step、单位脉冲响应函数impulse、零输入响应函数initial以及任意输入下的仿真函数lsim.

实用文档

四、实验容 (一) 稳定性 1.系统传函为Gs3s42s35s24s6s3s4s2s7s25432,试判断其稳定性

%Matlab计算程序 num=[3 2 5 4 6]; den=[1 3 4 2 7 2]; G=tf(num,den); pzmap(G); p=roots(den)

s22s22.用Matlab求出G(s)4的极点。

s7s33s25s2%Matlab计算程序 %求取极点 num=[1 2 2]; den=[1 7 3 5 2]; p=roots(den) (二)阶跃响应

101. 二阶系统Gs

2s2s101)键入程序,观察并记录单位阶跃响应曲线

2)计算系统的闭环根、阻尼比、无阻尼振荡频率,并记录 3)记录实际测取的峰值大小、峰值时间及过渡过程时间,并填表: 由图1-3及其相关理论知识可填下表:tp 峰值Cmax 峰值时间tp 过渡时间 ts

4.5nts3.5n2%(00.9)5%/d/3=1.0472

理论值 实际值 5% 2% 4)修改参数,分别实现1和2的响应曲线,并记录

5)修改参数,分别写出程序实现wn11w0和wn22w0的响应曲线,并记录

2%Matlab计算程序

第1)题:

实用文档

%单位阶跃响应曲线

clc clear num=[10]; den=[1 2 10]; step(num,den);

title('Step Response of G(s)=10/(s^2+2s+10)'); hold on t=[0:0.001:6]; y1=1.02; plot(t,y1)

第2)题:

%计算系统的闭环根、阻尼比、无阻尼振荡频率 num=[10];den=[1 2 10]; G=tf(num,den); [wn,z,p]=damp(G);

第4)题:

%kosi=1阶跃响应曲线 wn=sqrt(10); kosi=1;

G=tf([wn*wn],[1 2*kosi*wn wn*wn]); step(G);

title('Step Response of kosi=1');

%kosi=2的阶跃响应曲线 wn=sqrt(10); kosi=2;

G=tf([wn*wn],[1 2*kosi*wn wn*wn]); step(G);

title('Step Response of kosi=2');

第5)题:

%wn1=0.5w0的阶跃响应曲线 w0=sqrt(10); kosi=1/sqrt(10); wn1=0.5*w0;

G=tf([wn1*wn1],[1 2*kosi*wn1 wn1*wn1]); step(G);

title('Step Response of wn1=0.5w0');

%wn2=2w0的阶跃响应曲线

w0=sqrt(10);kosi=1/sqrt(10);wn2=2*w0; G=tf([wn2*wn2],[1 2*kosi*wn2 wn2*wn2]); step(G);

title('Step Response of wn2=2w0');

实用文档

2. 作出以下系统的阶跃响应,并与原系统响应曲线进行比较,作出相应的实验分析结果

(1)G1s(2)G2s2s10s2s1022,有系统零点的情况

s20.5s10s2s10,分子、分母多项式阶数相等

(3)G2s(4)G2ss20.5ss2s10ss2s1022,分子多项式零次项为零

,原响应的微分,微分系数为1/10

%各系统阶跃响应曲线比较

G0=tf([10],[1 2 10]);G1=tf([2 10],[1 2 10]);G2=tf([1 0.5 10],[1 2 10]); G3=tf([1 0.5 0],[1 2 10]);G4=tf([1 0 ],[1 2 10]); step(G0,G1,G2,G3,G4); grid on;

title('实验1.2 Step Response 曲线比较');

3. 单位阶跃响应:

C(s)25 求该系统单位阶跃响应曲线,并在所得图形上加网格线和标题 2R(s)s4s25

%单位阶跃响应

G=tf([25],[1 4 25]); step(G); grid on;

title('实验1.3 Step Response of G(s)=25/(s^2+4s+25)');

(三)系统动态特性分析

1200.01用Matlab求二阶系统G(s)2和G(s)2的峰值时间tp上升时s12s120s0.002s0.01间tr调整时间ts超调量%。

%G1阶跃响应

G1=tf([120],[1 12 120]); step(G1); grid on;

title(' Step Response of G1(s)=120/(s^2+12s+120)');

% G2单位阶跃响应

G2=tf([0.01],[1 0.002 0.01]); step(G2); grid on;

实用文档

title(' Step Response of G2(s)=0.01/(s^2+10.002s+0.01)');、

实验二 MATLAB及仿真实验(控制系统的根轨迹分析)

一 实验目的

1.利用计算机完成控制系统的根轨迹作图 2.了解控制系统根轨迹图的一般规律 3.利用根轨迹图进行系统分析 二 预习要点

1. 预习什么是系统根轨迹? 2. 闭环系统根轨迹绘制规则。 三 实验方法

(一) 方法:当系统中的开环增益k从0到变化时,闭环特征方程的根在复平面上的

一组曲线为根轨迹。设系统的开环传函为:G0(s)kN(s),则系统的闭环特Q(s)征方程为:1G0(s)1kN(s)0 Q(s)根轨迹即是描述上面方程的根,随k变化在复平面的分布。

(二) MATLAB画根轨迹的函数常用格式:利用Matlab绘制控制系统的根轨迹主要用

pzmap,rlocus,rlocfind,sgrid函数。

1、零极点图绘制

 [p,z]=pzmap(a,b,c,d):返回状态空间描述系统的极点矢量和零点矢量,而不在屏

幕上绘制出零极点图。

 [p,z]=pzmap(num,den):返回传递函数描述系统的极点矢量和零点矢量,而不在屏

幕上绘制出零极点图。

 pzmap(a,b,c,d)或pzmap(num,den):不带输出参数项,则直接在s复平面上绘制出

系统对应的零极点位置,极点用×表示,零点用o表示。

 pzmap(p,z):根据系统已知的零极点列向量或行向量直接在s复平面上绘制出对应

的零极点位置,极点用×表示,零点用o表示。 2、根轨迹图绘制

 rlocus(a,b,c,d)或者rlocus(num,den):根据SISO开环系统的状态空间描述模型

和传递函数模型,直接在屏幕上绘制出系统的根轨迹图。开环增益的值从零到无穷大变化。

 rlocus(a,b,c,d,k)或rlocus(num,den,k): 通过指定开环增益k的变化围来绘制

系统的根轨迹图。

 r=rlocus(num,den,k) 或者[r,k]=rlocus(num,den) :不在屏幕上直接绘出系统的

根轨迹图,而根据开环增益变化矢量k ,返回闭环系统特征方程1+k*num(s)/den(s)=0的根r,它有length(k)行,length(den)-1列,每行对应某个k值时的所有闭环极点。或者同时返回k与r。  若给出传递函数描述系统的分子项num为负,则利用rlocus函数绘制的是系统的零

度根轨迹。(正反馈系统或非最小相位系统)

实用文档

3、rlocfind()函数

 [k,p]=rlocfind(a,b,c,d)或者[k,p]=rlocfind(num,den) 它要求在屏幕上先已经绘制好有关的根轨迹图。然后,此命令将产生一个光标以用来选择希望的闭环极点。命令执行结果:k为对应选择点处根轨迹开环增益;p为此点处的系统闭环特征根。

 不带输出参数项[k,p]时,同样可以执行,只是此时只将k的值返回到缺省变量ans

中。

4、sgrid()函数

 sgrid:在现存的屏幕根轨迹或零极点图上绘制出自然振荡频率wn、阻尼比矢量z

对应的格线。

 sgrid(‘new’):是先清屏,再画格线。

 sgrid(z,wn):则绘制由用户指定的阻尼比矢量z、自然振荡频率wn的格线。

四 实验容 1. Gskgss1s2

要求: A. 记录根轨迹的起点、终点与根轨迹的条数; B. 确定根轨迹的分离点与相应的根轨迹增益; C. 确定临界稳定时的根轨迹增益kgL

%Matlab计算程序

z=[];p=[0 -1 -2];k=1;G=zpk(z,p,k);figure(1);pzmap(G) figure(2);rlocus(G)

title('实验2.1所作曲线');

%求临界稳定时的根轨迹增益Kgl

z=[];p=[0 -1 -2];k=1;G=zpk(z,p,k); rlocus(G)

title('实验2.1 临界稳定时的根轨迹增益Kgl'); [k,p]=rlocfind(G)

%求取根轨迹的分离点与相应的根轨迹增益 z=[];p=[0 -1 -2];k=1;G=zpk(z,p,k); rlocus(G)

title('实验2.1 根轨迹的分离点与相应的根轨迹增益曲线图'); [k,p]=rlocfind(G)

Ks32.G(s)g ss2要求:确定系统具有最大超调量时的根轨迹增益; 解:当Kg=5.5时,系统具有最大超调量%=3.89% , % Matlab程序

实用文档

num=5.5*[1 3];den=[1 2 0];G0=tf(num,den);G=feedback(G0,1,-1); step(G) title('实验2.2 系统阶跃响应曲线');

3.绘制下列各系统根轨迹图。

R(s) C(s)k(s22s4)

s(s4)(s6)(s24s1)

%Matlab计算程序 x1=[1 0]; x2=[1 4]; x3=[1 6]; x4=[1 4 1]; y1=conv(x1,x2); y2=conv(x3,x4); z=conv(y1,y2)

%绘制系统根轨迹图。

num=[1 2 4];den=[1 14 65 106 24 0];G0=tf(num,den); G=feedback(G0,1,-1);rlocus(G) title('实验2.3系统根轨迹图');

4.绘制下列各系统根轨迹图。开环传递函数: (1)G(s)H(s)k(s0.2); 2s(s3.6)%Matlab计算程序

G=tf([1 0.2],[1 3.6 0 0]); rlocus(G)

title('实验2.4开环系统 G(s)H(s)=k(s+0.2)/[s^2(s+3.6)] 根轨迹图'); (2)G(s)H(s)ks(s0.5)(s0.6s10)2

%Matlab计算程序

x1=[1 0];x2=[1 0.5];x3=[1 0.6 10]; y=conv(x1,x2); z=conv(x3,y)

%绘制系统根轨迹图

G=tf([1],[ 1 1.1 10.3 5 0]); rlocus(G)

title('实验2.4开环系统 G(s)H(s)=k/[s(s+0.5)(s^2+0.6s+10)] 根轨迹图');

实用文档

5.试绘制下面系统根轨迹图

k(s1) C(s) R(s) s(s1)(s24s16)

%Matlab计算程序

z=[1 4 16];r=roots(z) %绘制系统根轨迹图:

z=-1;p=[0 1 -2.0000 + 3.4641i -2.0000 - 3.4641i];k=1; G0=zpk(z,p,k);G=feedback(G0,1,-1);rlocus(G); title('实验2.5所求系统根轨迹图');

实验三 MATLAB及仿真实验(控制系统的频域分析)

一 实验目的

1. 利用计算机作出开环系统的波特图 2. 观察记录控制系统的开环频率特性 3. 控制系统的开环频率特性分析 二 预习要点

1. 预习Bode图和Nyquist图的画法; 2. 映射定理的容;

3. Nyquist稳定性判据容。 三 实验方法

1、奈奎斯特图(幅相频率特性图)

 对于频率特性函数G(jw),给出w从负无穷到正无穷的一系列数值,分别求出

Im(G(jw))和Re(G(jw))。以Re(G(jw)) 为横坐标, Im(G(jw)) 为纵坐标绘制成为极坐标频率特性图。

MATLAB提供了函数nyquist()来绘制系统的极坐标图,其用法如下:

 nyquist(a,b,c,d):绘制出系统的一组Nyquist曲线,每条曲线相应于连续状态空

间系统[a,b,c,d]的输入/输出组合对。其中频率围由函数自动选取,而且在响应快速变化的位置会自动采用更多取样点。

 nyquist(a,b,c,d,iu):可得到从系统第iu个输入到所有输出的极坐标图。

 nyquist(num,den):可绘制出以连续时间多项式传递函数表示的系统的极坐标图。  nyquist(a,b,c,d,iu,w)或nyquist(num,den,w):可利用指定的角频率矢量绘制出

系统的极坐标图。

 当不带返回参数时,直接在屏幕上绘制出系统的极坐标图(图上用箭头表示w的变

化方向,负无穷到正无穷) 。当带输出变量[re,im,w]引用函数时,可得到系统频率特性函数的实部re和虚部im及角频率点w矢量(为正的部分)。可以用plot(re,im)绘制出对应w从负无穷到零变化的部分。

2、对数频率特性图(波特图)

实用文档

对数频率特性图包括了对数幅频特性图和对数相频特性图。横坐标为频率w,采用对数分度,单位为弧度/秒;纵坐标均匀分度,分别为幅值函数20lgA(w),以dB表示;相角,以度表示。

MATLAB提供了函数bode()来绘制系统的波特图,其用法如下:

 bode(a,b,c,d,iu):可得到从系统第iu个输入到所有输出的波特图。 bode(a,求取系统对数频率特性图(波特图):bode()

求取系统奈奎斯特图(幅相曲线图或极坐标图):nyquist() b,c,d):自动绘制出系统的一组Bode图,它们是针对连续状态空间系统[a,b,c,d]的每个输入的Bode图。其中频率围由函数自动选取,而且在响应快速变化的位置会自动采用更多取样点。

 bode(num,den):可绘制出以连续时间多项式传递函数表示的系统的波特图。  bode(a,b,c,d,iu,w)或bode(num,den,w):可利用指定的角频率矢量绘制出系统的

波特图。  当带输出变量[mag,pha,w]或[mag,pha]引用函数时,可得到系统波特图相应的幅值

mag、相角pha及角频率点w矢量或只是返回幅值与相角。相角以度为单位,幅值可转换为分贝单位:magdb=20×log10(mag) 四 实验容

1.用Matlab作Bode图. 要求: 画出对应Bode图 , 并加标题. (1)G(s)25 s24s252(2)G(s)9(s0.2s1)

s(s21.2s9)%Matlab计算程序

sys=tf([25],[1 4 25]);figure(1);bode(sys);

title('实验3.1 Bode Diagram of G(s)=25/(s^2+4s+25)');

%Matlab计算程序

sys=tf([9 1.8 9],[1 1.2 9 0]); figure(1); bode(sys); grid on;

title('实验3.1 Bode Diagram of G(s)=9(s^2+0.2s+1)/[s(s^2+1.2s+9)]');

% Matlab计算程序(扩大坐标的Bode图) sys=tf([9 1.8 9],[1 1.2 9 0]); w=logspace(-2,3,100);figure(1);bode(sys,w);grid on; title('实验3.1 Bode Diagram of G(s)=9(s^2+0.2s+1)/[s(s^2+1.2s+9)]');

2.用Matlab作 Nyquist图. 要求画对应Nyquist图,并加网格和标题.

实用文档

1 2s0.8s1%Matlab计算程序

sys=tf([1],[1 0.8 1]); figure(1); nyquist(sys); grid on;

title('实验3.2 Nyquist Plot of G(s)=1/(s^2+0.8s+1)'); G(s)2n3.典型二阶系统G(s),试绘制取不同值时的Bode图。取22s2nsnn6,[0.1:0.1:1.0]。

Matlab绘图

clear close all clc wn=6;

kosi=[0.1:0.1:1.0];

%在对数空间上生成从10^(-1)到10^1共100个数据的横坐标 w=logspace(-1,1,100); num=wn^2; for kos=kosi

den=[1 2*kos*wn wn^2]; [mag,pha,w1]=bode(num,den,w);

% 注意mag的单位不是分贝,若需要分贝表示 % 可以通过20*log10(mag)进行转换 subplot(211); hold on; semilogx(w1,mag)

% 注意在所绘制的图形窗口会发现x轴并没有取对数分度

subplot(212); hold on; semilogx(w1,pha) end subplot(211) grid on

title('bode plot') xlabel('frequency(w)') ylabel('amplitude')

实用文档

text(6.2,5,'kosi=0.1') text(2,0.5,'kosi=1.0')

subplot(212) grid on

xlabel('frequency(w)') ylabel('phase deg') text(5,-20,'kosi=0.1') text(2,-85,'kosi=1.0') hold off

4.某开环传函为:G(s)50,试绘制系统的Nyquist 曲线,并判断闭环系统稳(s5)(s2)定性,最后求出闭环系统的单位脉冲响应。

%绘制系统的Nyquist 曲线 z=[]; p=[-5 2]; k=50;

sys=zpk(z,p,k); figure(1); nyquist(sys); grid on;

title('实验3.4 Nyquist Plot of G(s)=50/[(s+5)(s-2)]');

%闭环系统单位脉冲响应

z=[];p=[-5 2];k=50;sys=zpk(z,p,k);sys2=feedback(sys,1,-1);impulse(sys2) grid on;

title('实验3.4 闭环Impulse Response of G(s)=50/[(s+5)(s-2)]');

5.Gs1Ts2Ts122,2,T0.11,0.5,0.1

%作波特曲线图

kosi1=2;kosi2=1;kosi3=0.5;kosi4=0.1;

num=0.01;den1=[0.01 0.2*kosi1 1]; den2=[0.01 0.2*kosi2 1]; den3=[0.01 0.2*kosi3 1]; den4=[0.01 0.2*kosi4 1]; G1=tf(num,den1); G2=tf(num,den2); G3=tf(num,den3); G4=tf(num,den4); bode(G1,G2,G3,G4);grid on;

title('实验3.5 G(s) 波特曲线簇');

实用文档

6.Gs31.6s0.01s10.1s1 ,要求:

(a) 作波特图

(b) 由稳定裕度命令计算系统的稳定裕度Lg和c,并确定系统的稳定性 (c) 在图上作近似折线特性,与原准确特性相比 (a)

%作波特图

G=zpk([],[0 -100 -10],31.6);bode(G);grid on;

title('实验3.6 G(s)=31.6/[s(0.01s+1)(0.1s+1) ] Bode 曲线图');

%计算系统的稳定裕度Lg和c

G=zpk([],[0 -100 -10],31.6);margin(G);grid on;

7.已知系统结构图如图所示 :

R(s) Gcs 1ss1 Y(s)

其中:(1)Gcs1 (2)G1csss1

要求:

(a)作波特图,并将曲线保持进行比较

(b)分别计算两个系统的稳定裕度值,然后作性能比较 解 (a)

%Matlab计算程序

Gc1=tf([1],[1]);Gc2=tf([1],[1 1 0]);G=tf([1],[1 0]);G11=series(Gc1,G);G22=series(Gc2,G);

sys1=feedback(G11,1,-1);sys2=feedback(G22,1,-1); bode(sys1,sys2);

grid on;title('波特图曲线比较');

1

因篇幅问题不能全部显示,请点此查看更多更全内容