MatLab与控制系统仿真(重点编程)

合集下载

应用MATLAB控制系统仿真

应用MATLAB控制系统仿真

01
根据系统性能要求,设计比例、积分、微分控制器参数,优化
系统性能。
状态反馈控制器设计
02
通过状态反馈控制器设计,实现系统的最优控制。
鲁棒控制器设计
03
针对不确定性系统,设计鲁棒控制器,提高系统对参数变化的
适应性。
04
控制系统仿真的动态行为,通过建立和求解微 分方程来模拟系统的动态响应。
性能等。
05
Matlab控制系统仿真实 例
一阶系统仿真
总结词:简单模拟
详细描述:一阶系统是最简 单的控制系统,其动态行为 可以用一个一阶微分方程描 述。在Matlab中,可以使用 `tf`函数创建一个一阶传递函 数模型,然后使用`step`函 数进行仿真。
总结词:性能分析
详细描述:通过仿真,可以 观察一阶系统的响应曲线, 包括超调和调节时间等性能 指标。使用Matlab的绘图功 能,可以直观地展示系统的 动态行为。
THANKS FOR WATCHING
感谢您的观看
适用于模拟数字控制系统、采样控制系统等。
实时仿真
01
在实际硬件上实时模拟控制系统的动态行为,通过将
控制算法嵌入到实际控制系统中进行实时仿真。
02
使用Matlab中的`real-time workshop`等工具箱进
行建模和仿真,可以方便地实现实时仿真。
03
适用于模拟实际控制系统、验证控制算法的正确性和
实时仿真
Matlab支持实时仿真,可以在实 际硬件上运行控制算法,进行系 统测试。
02
控制系统数学模型
线性时不变系统
线性时不变系统(LTI)是指系统的输出与输入之间的关系 可以用线性常数来描述的系统。在控制系统中,LTI系统是 最常见的系统类型之一。

MATLAB控制系统各种仿真例题(包括simulink解法)

MATLAB控制系统各种仿真例题(包括simulink解法)

一、 控制系统的模型与转换1. 请将下面的传递函数模型输入到matlab 环境。

]52)1)[(2(24)(32233++++++=s s s s s s s G )99.02.0)(1(568.0)(22+--+=z z z z z H ,T=0.1s >> s=tf('s');G=(s^3+4*s+2)/(s^3*(s^2+2)*((s^2+1)^3+2*s+5));GTransfer function:s^3 + 4 s + 2------------------------------------------------------s^11 + 5 s^9 + 9 s^7 + 2 s^6 + 12 s^5 + 4 s^4 + 12 s^3>> num=[1 0 0.56];den=conv([1 -1],[1 -0.2 0.99]);H=tf(num,den,'Ts',0.1)Transfer function:z^2 + 0.56-----------------------------z^3 - 1.2 z^2 + 1.19 z - 0.992. 请将下面的零极点模型输入到matlab 环境。

请求出上述模型的零极点,并绘制其位置。

)1)(6)(5()1)(1(8)(22+++-+++=s s s s j s j s s G )2.8()6.2)(2.3()(1511-++=----z z z z z H ,T=0.05s>>z=[-1-j -1+j];p=[0 0 -5 -6 -j j];G=zpk(z,p,8)Zero/pole/gain:8 (s^2 + 2s + 2)--------------------------s^2 (s+5) (s+6) (s^2 + 1)>>pzmap(G)>> z=[0 0 0 0 0 -1/3.2 -1/2.6];p=[1/8.2];H=zpk(z,p,1,'Ts',0.05)Zero/pole/gain:z^5 (z+0.3125) (z+0.3846)-------------------------(z-0.122)Sampling time: 0.05>>pzmap (H )num=[0,7.1570,-6.4875 ];den=[1,-2.2326,1.7641,-0.4966];sysd=tf(num,den,0.05,'variable','z^-1')Transfer function:7.157 z^-1 - 6.487 z^-2-----------------------------------------1 - 2.233 z^-1 + 1.764 z^-2 - 0.4966 z^-3Sampling time: 0.05二、 线性系统分析1. 请分析下面传递函数模型的稳定性。

《MATLAB与控制系统仿真》实验报告

《MATLAB与控制系统仿真》实验报告

《MATLAB与控制系统仿真》实验报告一、实验目的本实验旨在通过MATLAB软件进行控制系统的仿真,并通过仿真结果分析控制系统的性能。

二、实验器材1.计算机2.MATLAB软件三、实验内容1.搭建控制系统模型在MATLAB软件中,通过使用控制系统工具箱,我们可以搭建不同类型的控制系统模型。

本实验中我们选择了一个简单的比例控制系统模型。

2.设定输入信号我们需要为控制系统提供输入信号进行仿真。

在MATLAB中,我们可以使用信号工具箱来产生不同类型的信号。

本实验中,我们选择了一个阶跃信号作为输入信号。

3.运行仿真通过设置模型参数、输入信号以及仿真时间等相关参数后,我们可以运行仿真。

MATLAB会根据系统模型和输入信号产生输出信号,并显示在仿真界面上。

4.分析控制系统性能根据仿真结果,我们可以对控制系统的性能进行分析。

常见的性能指标包括系统的稳态误差、超调量、响应时间等。

四、实验步骤1. 打开MATLAB软件,并在命令窗口中输入“controlSystemDesigner”命令,打开控制系统工具箱。

2.在控制系统工具箱中选择比例控制器模型,并设置相应的增益参数。

3.在信号工具箱中选择阶跃信号,并设置相应的幅值和起始时间。

4.在仿真界面中设置仿真时间,并点击运行按钮,开始仿真。

5.根据仿真结果,分析控制系统的性能指标,并记录下相应的数值,并根据数值进行分析和讨论。

五、实验结果与分析根据运行仿真获得的结果,我们可以得到控制系统的输出信号曲线。

通过观察输出信号的稳态值、超调量、响应时间等性能指标,我们可以对控制系统的性能进行分析和评价。

六、实验总结通过本次实验,我们学习了如何使用MATLAB软件进行控制系统仿真,并提取控制系统的性能指标。

通过实验,我们可以更加直观地理解控制系统的工作原理,为控制系统设计和分析提供了重要的工具和思路。

七、实验心得通过本次实验,我深刻理解了控制系统仿真的重要性和必要性。

MATLAB软件提供了强大的仿真工具和功能,能够帮助我们更好地理解和分析控制系统的性能。

Matlab与控制系统仿真部分习题答案

Matlab与控制系统仿真部分习题答案

【4.2】程序:num=[5,0];den=conv([1,1],conv([1,2],[1,3])); [numc,denc]=cloop(num,den);[z,p,k]=tf2zp(numc,denc);[A,B,C,D]=tf2ss(numc,denc);g_zp=zpk(z,p,k)g_tf=tf(numc,denc)g_ss=ss(A,B,C,D)运行结果:Zero/pole/gain:5 s----------------------------------(s+0.4432) (s^2 + 5.557s + 13.54)Transfer function:5 s----------------------s^3 + 6 s^2 + 16 s + 6a =x1 x2 x3x1 -6 -16 -6x2 1 0 0x3 0 1 0b =u1x1 1x2 0x3 0c =x1 x2 x3y1 0 5 0d =u1y1 0【4.3】程序:A=[0 0 0 -1;1 0 0 -2;0 1 0 -3;0 0 1 -4]; B=[0;0;0;1];C=[1 0 0 0];g_ss=ss(A,B,C,D)[num,den]=ss2tf(A,B,C,D);g_tf=tf(num,den)[z,p,k]=ss2zp(A,B,C,D);g_zpk=zpk(z,p,k)运行结果:a =x1 x2 x3 x4x1 0 0 0 -1x2 1 0 0 -2x3 0 1 0 -3x4 0 0 1 -4b =u1x1 0x2 0x3 0x4 1c =x1 x2 x3 x4y1 1 0 0 0d =u1y1 0Continuous-time model.Transfer function:-3.109e-015 s^3 - s^2 - 3.331e-015 s - 4.441e-016 -------------------------------------------------s^4 + 4 s^3 + 3 s^2 + 2 s + 1Zero/pole/gain:- s^2----------------------------------------------(s+0.6724) (s+3.234) (s^2 + 0.0936s + 0.4599)【5.1】(1)程序num=[0,10];den=conv([1,0],[1,7,17]); [numc,denc]=cloop(num,den,-1); G=tf(numc,denc)[y,t]=step(G);plot(t,y,'b-')C=dcgain(G);n=1;while y(n)<0.1*Cn=n+1;endm=1;while y(m)<0.9*Cm=m+1;endrisetime=t(m)-t(n)[Y,k]=max(y); percentovershoot=100*(Y-C)/Ci=length(t);while(y(i)>0.98*C)&(y(i)<1.02*C) i=i-1;endsettlingtime=t(i)运行结果:Transfer function:10-----------------------s^3 + 7 s^2 + 17 s + 10risetime =2.7312percentovershoot =-0.4399settlingtime =5.1372图:0123456700.10.20.30.40.50.60.70.80.91(2)程序k=[10,100,1000];t=linspace(1,20,200);num=1;den=conv([1,0],[1,7,17]);for j=1:3;s1=tf(num*k(j),den);sys=feedback(s1,1)y(:,j)=step(sys,t);endplot(t,y(:,1),'r',t,y(:,2),'b',t,y(:,3),'g')gtext('k=10');gtext('k=100');gtext('k=1000') 运行结果:Transfer function:10-----------------------s^3 + 7 s^2 + 17 s + 10Transfer function:100------------------------s^3 + 7 s^2 + 17 s + 100Transfer function:1000-------------------------s^3 + 7 s^2 + 17 s + 1000图:024681012141618200.20.40.60.811.21.41.61.8图:02468101214161820-3-2-1123422【6.1】程序:(1)num1=[1,1];den1=conv([1,0,0],conv([1,2],[1,4]));sys1=tf(num1,den1)rlocus(sys1)运行结果:-12-10-8-6-4-2024-8-6-4-202468Root LocusReal Axis I m a g i n a r y A x i s(2)num2=[1,1];den2=conv([1,0],conv([1,-1],[1,4,16]));sys2=tf(num2,den2)rlocus(sys2)运行结果:-10-8-6-4-2024-8-6-4-202468Root LocusReal Axis I m a g i n a r y A x i s(3)num3=[1,8];den3=conv([1,0,0],conv([1,3],conv([1,5],conv([1,7],[1,15])))); sys3=tf(num3,den3)rlocus(sys3)运行结果:-30-25-20-15-10-5051015-20-15-10-505101520Root LocusReal Axis I m a g i n a r y A x i s【6.3】程序:num=[1,2];den=conv([1,0],conv([1,4],conv([1,8],[1,2,5])));sys=tf(num,den)rlocus(sys)[k,poles]=rlocfind(sys)运行结果:Transfer function:s + 2---------------------------------------s^5 + 14 s^4 + 61 s^3 + 124 s^2 + 160 sSelect a point in the graphics windowselected_point =0.0296 + 2.2826i k =135.8815poles =-7.3248-5.41040.0145 + 2.3021i0.0145 - 2.3021i -1.2939图:-20-15-10-5051015-15-10-551015Root LocusReal Axis I m a g i n a r y A x i s【7.3】程序(1)画波特图num=[50];den=conv([1,0],conv([1,10],[3,1]));sys=tf(num,den)sys1=feedback(sys,1)bode(sys)grid图(1)-150-100-50050100M a g n i t u d e (d B)10-210-1100101102103-270-225-180-135-90P h a s e (d e g )Bode DiagramFrequency (rad/sec)程序(2)画奈奎斯特图num=[50];den=conv([1,0],conv([1,10],[3,1]));sys=tf(num,den)sys1=feedback(sys,1)nyquist(sys)grid图(2)-16-14-12-10-8-6-4-20-300-200-100100200300Nyquist DiagramReal Axis I m a g i n a r y A x i s程序(3)画零极点图num=[50];den=conv([1,0],conv([1,10],[3,1]));sys=tf(num,den)sys1=feedback(sys,1)pzmap(sys1)gird图(3)P ole-Zero MapReal Axis I m a g i n a r y A x i s -12-10-8-6-4-20-1.5-1-0.50.511.5程序(4)计算相角裕量和幅值裕量num=[50];den=conv([1,0],conv([1,10],[3,1]));sys=tf(num,den)sys1=feedback(sys,1)[gm,pm,wcg,wcp]=margin(sys)运行结果Transfer function:50---------------------3 s^3 + 31 s^2 + 10 sTransfer function:50--------------------------3 s^3 + 31 s^2 + 10 s + 50gm =2.0667pm =7.5615wcg =1.8257wcp =1.2645程序(5)绘制阶跃响应曲线num=[50];den=conv([1,0],conv([1,10],[3,1])); sys=tf(num,den)sys1=feedback(sys,1)step(sys1)图(5)00.20.40.60.811.21.41.61.82Step ResponseTime (sec)A m p l i t u d e【7.4】程序如下:num=[300];den=conv([1,0,0],conv([0.2,1],[0.02,1]));sys=tf(num,den)margin(sys)grid波特图如下:-150-100-50050100M a g n i t u d e (d B )10-1100101102103-360-315-270-225-180P h a s e (d e g )Bode DiagramGm = Inf , P m = -78 deg (at 11 rad/sec)Frequency (rad/sec)【9.3】程序:A=[-2 2 -1;0 -2 0;1 -4 0];B=[0;0;1];C=[1,0,0];D=0;M=ctrb(A,B)m=rank(M)if m==3;disp('系统可控')elsedisp('系统不可控')endN=obsv(A,C)n=rank(N)if n==3;disp('系统可观')elsedisp('系统不可观') endsys=ss(A,B,C,D) [num,den]=ss2tf(A,B,C,D) sys1=tf(num,den)[z,p,k]=ss2zp(A,B,C,D)运行结果:M =0 -1 20 0 01 0 -1m =2系统不可控N =1 0 0-2 2 -13 -4 2n =2系统不可观a =x1 x2 x3x1 -2 2 -1x2 0 -2 0x3 1 -4 0b =u1x1 0x2 0x3 1c =x1 x2 x3y1 1 0 0d =u1y1 0 Continuous-time model.0 0 -1 -2den =1 4 5 2Transfer function:-s - 2---------------------s^3 + 4 s^2 + 5 s + 2z =-2p =-1-1-2k = -1【10.1】(1)程序:A=[0,1,0,0;0,5,0,0;0,0,-7,0;0,0,0,-8]; B=[0;1;0;1];C=[1,2,3,4];D=zeros(1,1);G_ss=ss(A,B,C,D)运行结果:a =x1 x2 x3 x4x1 0 1 0 0x2 0 5 0 0x3 0 0 -7 0x4 0 0 0 -8u1x1 0x2 1x3 0x4 1c =x1 x2 x3 x4y1 1 2 3 4d =u1y1 0(2):程序:[num1,den1]=ss2tf(A,B,C,D); p=roots(den1)i=0;for k=1:1:length(p)if real(p(k))>0i=i+1;endendif i>0disp('系统不稳定');elsedisp('系统稳定');end运行结果:p =5.0000-8.0000-7.0000系统不稳定(3)(4)程序:AA=[0,1,0;0,5,0;0,0,-8];BB=[0;1;1];P=[-1,-2,-8];K=acker(AA,BB,P);i=4;K(4)=0;Kpp=eig(A-B*K)sys1=tf(num1,den1);[y1,t]=step(sys1);plot(t,y1)hold onA_feedback=A-B*K;[num2,den2]=ss2tf(A_feedback,B,C,D); sys2=tf(num2,den2);[y2,t]=step(sys2);plot(t,y2,'r')gridgtext('反馈前')gtext('反馈后')运行结果:K =2 8 0 0pp =-8-2-1-7图形:01234560123456【13.1】程序:A=[0,1;0,0];B=[0;1];C=[1,0];D=zeros(1,1);G_ss=ss(A,B,C,D)M=ctrb(A,B);if rank(M)==2disp('系统完全能控'); elsedisp('系统不完全能控'); endS=[1,0];N=obsv(A,S);if rank(N)==2disp('(A,S)可观测'); elsedisp('(A,S)不可观测'); endR=1;Q=[1,0;0,0];[K,P,E]=Lqr(A,B,Q,R)A_new=A-B*K;G_new=ss(A_new,B,C,D);t=linspace(0,5,100)';y1=step(G_ss,t);y2=step(G_new,t);plot(t,y1,'r:',t,y2,'b-')gridgtext('反馈前')gtext('反馈后')运行结果:a =x1 x2x1 0 1x2 0 0b =u1x1 0x2 1c =x1 x2y1 1 0d =u1y1 0Continuous-time model. 系统完全能控(A,S)可观测K =1.0000 1.4142P =1.4142 1.00001.0000 1.4142E =-0.7071 + 0.7071i-0.7071 - 0.7071i图形:00.51 1.52 2.53 3.54 4.5502468101214。

基于MATLAB控制系统仿真实验报告

基于MATLAB控制系统仿真实验报告

tf 4
y0

0 1
6、求出 G1(s)
2 (s2 2s 1) 与 G2 (s)
1 (2s3

3s2
1)
的单位阶跃响应,并分别
求出状态空间模型。
解:(1) G1(s) 2 (s2 2s 1) 的状态空间模型求解如下:
function shiyan2 b1=[2];
D(z)

0.62(1 0.136z 1)(1 0.183z (1 0.045z 1)(1 0.53z 1)
1 )
分别用仿真算法得到系统在单位阶跃输入作用下的响应,系统在单位速度输
入是的输出响应。
解:(1)首先将 W1(s)转换为 W1(z),采样周期 T=0.2s,程序清单如下: function shiyan42 num=[10];den=[0.005 0.15 1 0]; ts=0.2;[nc,dc]=c2dm(num,den,ts)
INTRO(注意:intro 为一个用 MATLAB 语言编写的幻灯片程序,主要演示
常用的 MATLAB 语句运行结果。)
然后,根据现实出来的幻灯片右面按钮进行操作,可按 START——NEXT—
—NEXT 按钮一步步运行,观察。
3、自编程序并完成上机编辑,调试,运行,存盘:
(1)用 MATLAB 命令完成矩阵的各种运算,例如:
5、利用 ode23 或 ode45 求解线性时不变系统微分方程 y(t) Ay(t) ,并绘制出 y(t)
曲线,式中
A

0.5

1
1 0.5
t t0 t 如下: function xdot=fun21(t,x) A=[-0.5 1;-1 -0.5]; xdot=A*x; function fzsy22 t0=0;tf=4;tol=1e-6; x0=[0;1];trace=1; [t,x]=ode23('fun21',t0,tf,x0,tol,trace); plot(t,x) 得到的实验结果如下图所示:

MATLAB与控制系统仿真

MATLAB与控制系统仿真
由分子和分母多项式系数可以唯一确定传递函数。 分子向量 num =[bm bm-1 … b1 b0 ] (numerator) 分母向量 den =[an an-1 … a1 a0 ] (denominator)
用tf( )命令可以建立一个传递函数模型,或将零极点增益模型和 状态空间模型转换为传递函数模型。 tf( )命令调用格式如下: Sys=tf(num,den): 用于生成S传递函数。
传递函数的部分分式展开 传递函数有时需要进行有理分式的分式展开。所谓部分 分式展开,就是将高阶的有理分式化为若干个一阶有理 分式之和的形式。如果传递函数G(s)不包含多重极点, 那么,将G(s)用部分分式展开后即可得到: n r
其中,k是常数项,对于真分式来说 k=0; r是各分式的系数,p是系统的极点。 MATLAB提供了一条函数residue( )可以求解有理分式的 部分分式展开,其基本调用格式为:(R,P,K)=residue(B,A) 其中B和A分别是降幂排列的该有理分式的分子和分母多 项式系数:R是求得的部分分式展开的各分式系数,P是 系统极点,K是常数项。
G1 ( s ) s5 ( s 1)(s 3 )
G2 ( s ) s 2 4s 4 )
系统输入信号为r(t)=sin(t),用Simulink求系统输出响应。
5.3.2 时域响应性能指标求取
调用单位阶跃响应函数step(),可以获得系统的单位阶跃 响应,当采用[y,t]=step(G)的调用格式时,通过对y,t的计 算,可以得到时域性能指标。 1. 峰值时间(timetopeak) [Y,k]=max(y) %求出y的峰值及相应的时间 timetopeak=t(k) %获得峰值时间 2 . 超调量(percentovershoot) C=dcgain(G) %求取系统的终值 [Y,k]=max(y) %求出y的峰值及相应的时间 percentovershoot=100*(Y-C)/C %计算超调量

matlab 控制系统仿真

matlab 控制系统仿真

摘要MATLAB语言是一种十分有效的工具,能容易地解决在系统仿真及控制系统计算机辅助设计领域的教学与研究中遇到的问题,它可以将使用者从繁琐的底层编程中解放出来,把有限的宝贵时间更多地花在解决科学问题上。

MATLAB GUI 是MATLAB的人机交互界面。

由于GUI本身提供了windows基本控件的支持,并且具有良好的事件驱动机制,同时提供了MATLAB数学库的接口,所以GUI 对于控制系统仿真的平台设计显得十分合适。

GUI对于每个用户窗口生成.fig和.m 文件。

前者负责界面的设计信息,后者负责后台代码的设计。

本文所做的研究主要是基于MATLAB GUI平台,结合控制系统基础理论和MATLAB控制系统工具箱,实现了用于控制系统计算机辅助分析与设计的软件。

本软件主要功能:实现传递函数模型输入、状态方程模型输入、模型装换、控制系统稳定性分析、系统可观性可控性判断,绘制系统奈奎斯特图、波特图、根轨迹图以及零极点分布图。

在继续完善的基础上能够用于本科自动控制原理教程的教学实验和一般的科学研究。

关键词:控制系统;MATLAB GUI;计算机辅助设计AbstractMATLAB language is a very effective tool,and can be easily resolved in the system simulation and control system of teaching in the field of computer-aided design and research problems,it could be the bottom of the user from tedious programming liberate the limited spend more valuable time to solve scientific problems.The MATLAB GUI is the interactive interface.As the GUI itself provides the basic control windows support,and has a good mechanism for event-driven,while providing the MATLAB Math Library interface,the GUI for control system simulation platform for the design of it is suitable. GUI window generated for each user. Fig and.M file. The former is responsible for the design of the interface information,which is responsible for the design of the background code.Research done in this article is mainly based on MATLAB GUI platform,the basis of combination of control system theory and MATLAB Control System Toolbox,the realization of control systems for computer-aided analysis and design software. The main functions of the software: the realization of transfer function model input,the state equation model input,the model fitted for the control system stability analysis,system observability controllability judgments、rendering the system Nyquist diagram、Bode plots、root locus and Pole-zero distribution. While continuing to improve based on the principle of automatic control can be used for undergraduate teaching course experiments and scientific research in general.Key words:Control System;MATLAB GUI; Computer-assistant design目录第1章概述 (1)1.1 论文选题背景和意义 (1)1.2 计算机辅助分析与设计在控制系统仿真中的发展现状 (1)1.3 本文主要内容 (3)第2章控制系统与MATLAB语言 (4)2.1 控制系统理论基础 (4)2.2 MATLAB语言与控制系统工具箱 (5)第3章 MATLAB GUI简介及应用 (9)3.1 MATLAB GUI (9)3.2 软件设计步骤 (10)第4章仿真系统测试与演示 (16)4.1 控制系统的模型输入 (16)4.2 控制系统的稳定性分析 (19)4.3 控制系统可控可观性分析 (20)4.4 控制系统频率响应 (23)4.5 控制系统时域响应 (27)4.6 控制系统根轨迹绘制 (28)结论 (31)参考文献 (32)致谢 (33)第1章概述1.1 论文选题背景和意义自动控制原理是自动控制专业和自动化专业的主要课程之一,是研究自动控制技术的基础理论课,是必修的专业基础课程。

MATLABSimulink和控制系统仿真实验报告

MATLABSimulink和控制系统仿真实验报告

MATLAB/Simulink与控制系统仿真实验报告姓名:喻彬彬学号:K031541725实验1、MATLAB/Simulink 仿真基础及控制系统模型的建立一、实验目的1、掌握MATLAB/Simulink 仿真的基本知识;2、熟练应用MATLAB 软件建立控制系统模型。

二、实验设备电脑一台;MATLAB 仿真软件一个三、实验内容1、熟悉MATLAB/Smulink 仿真软件。

2、一个单位负反馈二阶系统,其开环传递函数为210()3G s s s =+。

用Simulink 建立该控制系统模型,用示波器观察模型的阶跃响应曲线,并将阶跃响应曲线导入到MATLAB 的工作空间中,在命令窗口绘制该模型的阶跃响应曲线。

3、某控制系统的传递函数为()()()1()Y s G s X s G s =+,其中250()23s G s s s+=+。

用Simulink 建立该控制系统模型,用示波器观察模型的阶跃响应曲线,并将阶跃响应曲线导入到MATLAB 的工作空间中,在命令窗口绘制该模型的阶跃响应曲线。

4、一闭环系统结构如图所示,其中系统前向通道的传递函数为320.520()0.11220s G s s s s s+=+++,而且前向通道有一个[-0.2,0.5]的限幅环节,图中用N 表示,反馈通道的增益为1.5,系统为负反馈,阶跃输入经1.5倍的增益作用到系统。

用Simulink 建立该控制系统模型,用示波器观察模型的阶跃响应曲线,并将阶跃响应曲线导入到MATLAB 的工作空间中,在命令窗口绘制该模型的阶跃响应曲线。

四、实验报告要求实验报告撰写应包括实验名称、实验内容、实验要求、实验步骤、实验结果及分析和实验体会。

五、实验思考题总结仿真模型构建及调试过程中的心得体会。

题1、(1)利用Simulink的Library窗口中的【File】→【New】,打开一个新的模型窗口。

(2)分别从信号源库(Sourse)、输出方式库(Sink)、数学运算库(Math)、连续系统库(Continuous)中,用鼠标把阶跃信号发生器(Step)、示波器(Scope)、传递函数(Transfern Fcn)和相加器(Sum)4个标准功能模块选中,并将其拖至模型窗口。

MATLAB控制系统的仿真

MATLAB控制系统的仿真

C R
x1 x2
0 1
L
u
L
y [1
0]
x1 x2
[0]u

x Ax bu
y CT x du
• 没有良好的计算工具前:系统建立、变换、分析、设 计、绘图等相当复杂。
• MATLAB控制系统软件包以面向对象的数据结构为基 础,提供了大量的控制工程计算、设计库函数,可以 方便地用于控制系统设计、分析和建模。
Transfer function:
s+1 ------------s^2 + 5 s + 6
Matlab与系统仿真
22
应用——系统稳定性判断
系统稳定性判据: 对于连续时间系统,如果闭环极点全部在S平面左半平面,
则系统是稳定的;
若连续时间系统的全部零/极点都位于S左半平面, 则系统是——最小相位系统。
Matlab与系统仿真
38
4.2 动态特性和时域分析函数
(一)动态特性和时域分析函数表 (二)常用函数说明 (三)例子
Matlab与系统仿真
39
(一)动态特性和时域分析函数表 ——与系统的零极点有关的函数
表8.6前部分p263
Matlab与系统仿真
40
——与系统的时域分析有关的函数
Matlab与系统仿真
Matlab与系统仿真
8
4.1 控制工具箱中的LTI对象
Linear Time Invariable
(一)控制系统模型的建立 (二)模型的简单组合 (三)连续系统和采样系统变换(*略)
Matlab与系统仿真
9
(一)控制系统模型的建立
➢ MATLAB规定3种LTI子对象:
• Tf 对象—— 传递函数模型 • zpk 对象—— 零极增益模型 • ss 对象—— 状态空间模型

《MATLAB与控制系统仿真》实验报告

《MATLAB与控制系统仿真》实验报告

《MATLAB与控制系统仿真》实验报告实验报告:MATLAB与控制系统仿真引言在现代控制工程领域中,仿真是一种重要的评估和调试工具。

通过仿真技术,可以更加准确地分析和预测控制系统的行为和性能,从而优化系统设计和改进控制策略。

MATLAB是一种强大的数值计算软件,广泛应用于控制系统仿真。

实验目的本实验旨在掌握MATLAB在控制系统仿真中的应用,通过实践了解控制系统的建模与仿真方法,并分析系统的稳定性和性能指标。

实验内容1.建立系统模型首先,根据控制系统的实际情况,建立系统的数学模型。

通常,控制系统可以利用线性方程或差分方程进行建模。

本次实验以一个二阶控制系统为例,其传递函数为:G(s) = K / [s^2 + 2ζω_ns + ω_n^2],其中,K表示放大比例,ζ表示阻尼比,ω_n表示自然频率。

2.进行系统仿真利用MATLAB软件,通过编写代码实现控制系统的仿真。

可以利用MATLAB提供的函数来定义传递函数,并通过调整参数来模拟不同的系统行为。

例如,可以利用step函数绘制控制系统的阶跃响应图像,或利用impulse函数绘制脉冲响应图像。

3.分析系统的稳定性与性能在仿真过程中,可以通过调整控制系统的参数来分析系统的稳定性和性能。

例如,可以改变放大比例K来观察系统的超调量和调整时间的变化。

通过观察控制系统的响应曲线,可以判断系统的稳定性,并计算出性能指标,如超调量、调整时间和稳态误差等。

实验结果与分析通过MATLAB的仿真,我们得到了控制系统的阶跃响应图像和脉冲响应图像。

通过观察阶跃响应曲线,我们可以得到控制系统的超调量和调整时间。

通过改变放大比例K的值,我们可以观察到超调量的变化趋势。

同时,通过观察脉冲响应曲线,我们还可以得到控制系统的稳态误差,并判断系统的稳定性。

根据实验结果分析,我们可以得出以下结论:1.控制系统的超调量随着放大比例K的增大而增大,但当K超过一定值后,超调量开始减小。

2.控制系统的调整时间随着放大比例K的增大而减小,即系统的响应速度加快。

MATLAB控制系统与仿真

MATLAB控制系统与仿真

MATLAB控制系统与仿真课程设计报告院(系):电气与控制工程学院专业班级:测控技术与仪器1301班姓名:吴凯学号:1306070127指导教师:杨洁昝宏洋基于MATLAB的PID恒温控制器本论文以温度控制系统为研究对象设计一个PID控制器。

PID控制是迄今为止最通用的控制方法,大多数反馈回路用该方法或其较小的变形来控制。

PID控制器(亦称调节器)及其改进型因此成为工业过程控制中最常见的控制器 (至今在全世界过程控制中用的84%仍是纯PID调节器,若改进型包含在内则超过90%)。

在PID控制器的设计中,参数整定是最为重要的,随着计算机技术的迅速发展,对PID参数的整定大多借助于一些先进的软件,例如目前得到广泛应用的MATLAB仿真系统。

本设计就是借助此软件主要运用Relay-feedback 法,线上综合法和系统辨识法来研究PID控制器的设计方法,设计一个温控系统的PID控制器,并通过MATLAB中的虚拟示波器观察系统完善后在阶跃信号下的输出波形。

关键词:PID参数整定;PID控制器;MATLAB仿真。

Design of PID Controller based on MATLABAbstractThis paper regards temperature control system as the research object to design a pid controller. Pid control is the most common control method up until now; the great majority feedback loop is controlled by this method or its small deformation. Pid controller (claim regulator also) and its second generation so become the most common controllers in the industry process control (so far, about 84% of the controller being used is the pure pid controller, it’ll exceed 90% if the second generation included). Pid parameter setting is most important in pid controller designing, and with the rapid development of the computer technology, it mostly recurs to some advanced software, for example, mat lab simulation software widely used now. this design is to apply that soft mainly use Relay feedback law and synthetic method on the line to study pid controller design method, design a pid controller of temperature control system and observe the output waveform while input step signal through virtual oscilloscope after system completed.Keywords: PID parameter setting ;PID controller;MATLAB simulation。

Matlab技术控制系统设计与仿真

Matlab技术控制系统设计与仿真

Mat1ab技术控制系统设计与仿真一、引言在现代科技领域中,控制系统是一个至关重要的概念。

在各种领域,如机械工程、电子工程、化工工程等,控制系统的设计和仿真是实现目标的关键。

而Mat1ab作为一种功能强大的数值计算软件,被广泛应用于控制系统设计和仿真。

本文将探讨MaHab技术在控制系统设计和仿真中的应用。

二、MatIab基础知识在开始探讨MatIab技术在控制系统设计和仿真中的应用之前,有必要先了解一些Mat1ab的基础知识。

Mat1ab是由MathWorks公司开发的一款用于数值计算和科学绘图的软件。

它提供了丰富的函数库和工具箱,能够满足各种数学和工程领域的需求。

Mauab的核心功能包括数值计算、数据分析、图形绘制和算法开发等。

通过Mat1ab,用户可以进行复杂的矩阵运算、符号计算、非线性优化和差分方程求解等操作。

此外,MaUab还具有强大的数据分析功能,能够进行统计分析、数据可视化和模型拟合等操作。

三、控制系统设计控制系统设计是指通过控制器和执行器对系统进行控制的过程。

Mat1ab提供了一系列用于控制系统设计的工具箱,如Contro1SystemToo1box和Simu1ink等。

Contro1SystemToo1box是Mat1ab中用于控制系统分析和设计的工具箱。

它包含了各种用于系统建模、控制器设计和仿真的函数和工具。

例如,用户可以使用TransferFunction对象来描述系统的传输函数,并使用该对象进行稳定性分析和控制器设计。

此外,COntrOISyStemTOOIbOX还提供了多种控制器设计方法,如根轨迹法、频域法和状态空间法等,可以满足不同系统的设计需求。

SimUIink是MatIab中的一个仿真工具,用于建立动态系统的模型和仿真。

通过Simu1ink,用户可以使用图形界面建立系统的模型,并使用各种模块来描述系统的构成和行为。

SimU1ink提供了广泛的预定义模块,包括传感器、执行器、控制器等。

如何在MATLAB中进行控制系统的建模与仿真

如何在MATLAB中进行控制系统的建模与仿真

如何在MATLAB中进行控制系统的建模与仿真在现代工程领域中,控制系统的建模与仿真是必不可少的一项技术。

MATLAB 作为一种强大的科学计算软件,并提供了丰富的工具箱,可以帮助工程师们快速而准确地进行控制系统的建模和仿真。

本文将介绍如何在MATLAB中进行控制系统的建模与仿真的一般步骤和注意事项。

一、引言控制系统是一种以实现某种特定目标为目的对系统进行调节和控制的技术,在现代工程中得到了广泛的应用。

控制系统的建模与仿真是控制系统设计的重要环节,通过建立系统的数学模型,可以对系统的性能进行有效地评估和分析,从而为系统的设计和优化提供指导。

二、MATLAB中的控制系统建模工具箱MATLAB提供了专门的控制系统工具箱,包括线性和非线性系统建模、控制器设计与分析等功能。

其中,Simulink是MATLAB中最重要的控制系统建模工具之一,它可以方便地用来搭建控制系统的框架,并进行仿真与分析。

三、建立控制系统数学模型在进行控制系统的建模之前,需要先确定系统的类型和工作原理。

常见的控制系统包括开环控制系统和闭环控制系统。

开环控制系统中,控制器的输出不受被控对象的反馈作用影响;闭环控制系统中,控制器的输出受到被控对象的反馈作用影响。

在MATLAB中,可以通过使用Transfer Function对象或State Space对象来表示控制系统的数学模型。

Transfer Function对象用于线性时不变系统的建模,可以通过给定系统的分子多项式和分母多项式来定义一个传递函数;State Space对象则适用于非线性时变系统的建模,可以通过状态空间方程来定义系统。

四、利用Simulink搭建控制系统框架Simulink是一种基于图形化编程的建模仿真工具,在MATLAB中可以方便地使用它来搭建控制系统的框架。

通过简单地拖拽、连接不同的模块,可以构建出一个完整的控制系统模型。

首先,打开Simulink,选择相应的控制系统模板或从头开始设计自己的模型。

2.5 应用MATLAB控制系统仿真-计算机-

2.5 应用MATLAB控制系统仿真-计算机-
例2.2所示的位置随动系统,在给定各元件参数并忽略La和令ML = 0的情况下,其结构图如图2-74所示:
图2-74 位置随动系统的结构图第一步求闭环传递函数GB (s)=q c(s) /q r(s),求解过程及结果如图2-75所示。第二步利用step()函数计算参考输入q r (t)为单阶跃信号时输出q c (t)的响应。
图2-63 分析弹簧—重物—阻尼器的MATLAB指 弹簧—重物—阻尼器的自由运动曲线MATLAB可分析以传递函数形式描述的系统。分子多项式和分母多项式都必须在MATLAB指令中指定。
在MATLAB中多项式由行向量组成,这些行向量包含了降次
>>y0=0.15;wn=sqrt(2);>>zeta1=3/(2*sqrt(2)); zeta2=1/(2*sqrt(2));
>>t=[0:0.1:10];>>unforced
(a)MATLAB指令窗口
* 计算系统在给定初始条件下的自由运动 t1=acos(zeta1)*ones(1,length(t)); t2=acos(zeta2)*ones(1,length(t));c1=(y0/sqrt(1-zeta1^2)); c2=(y0/sqrt(1-zeta2^2)); y1=c1*exp(-zeta1*wn*t)sin(wn*sqrt(1-zeta1^2)*t+t1); y2=c2*exp(-zeta2*wn*t)sin(wn*sqrt(1-zeta2^2)*t+t2);
图2-76 位置随动系统的阶跃响应曲线图2-76给出了位置随动系统的阶跃响应曲线。用plot()函数用画出y(t)曲线,grid函数用于给图形加上网格。
小结
本章讨论了如何建立控制系统以及元部件的数学模型问题。本章所涉及的数学模型共有三种,即微分方程、传递函数、结构图或信号流图。利用传递函数研究线性系统,可根据传递函数的极点和零点分布判定系统对不同输入信号的响应特性。利用结构图或信号流图可以了解系统中的每个变量,还可以通过梅逊(Mason)公式,方便地求得系统输入输出间的传递函数。利用MATLAB软件可求解系统在不同参数和输入情况下的响应。

基于matable的控制系统仿真试验指导书

基于matable的控制系统仿真试验指导书

实验一 基于Matlab 的控制系统模型一、 实验目的1. 熟悉Matlab 的使用环境,学习Matlab 软件的使用方法和编程方法2. 学习使用Matlab 进行各类数学变换运算的方法3. 学习使用Matlab 建立控制系统模型的方法二、 实验器材x86系列兼容型计算机,Matlab 软件三、 实验原理1. 香农采样定理对一个具有有限频谱的连续信号f(t)进行连续采样,当采样频率满足m ax 2ωω≥S 时,采样信号f*(t)2. 拉式变换和Z 变换使用Matlab 求函数的拉氏变换和Z 变换3. 控制系统模型的建立与转化传递函数模型:num=[b1,b2,…bm],den=[a1,a2,…an],nn nm m m b sa s ab sb sb dennum s G ++++++==-- 121121)(零极点增益模型:z=[z1,z2,……zm],p=[p1,p2……pn],k=[k],)())(()())(()(2121n m p s p s p s z s z s z s k s G ------=四、实验步骤1.根据参考程序,验证采样定理、拉氏变换和Z变换、控制系统模型建立的方法2.观察记录输出的结果,与理论计算结果相比较3.自行选则相应的参数,熟悉上述的各指令的运用方法五、实验数据及结果分析记录输出的数据和图表并分析六、总结实验二基于Matlab的控制系统仿真一、实验目的1.学习使用Matlab的命令对控制系统进行仿真的方法2.学习使用Matlab中的Simulink工具箱进行系统仿真的方法二、实验器材x86系列兼容型计算机,Matlab软件三、实验原理1.控制系统命令行仿真二阶系统闭环传递函数为22222554.025)54.02(51)54.02(5)(+⨯⨯+=⨯⨯++⨯⨯+=s ss s s s s G ,请转换为离散系统脉冲传递函数并仿真,改变参数,观察不同的系统的仿真结果。

基于MATLAB控制系统的仿真与应用毕业设计论文

基于MATLAB控制系统的仿真与应用毕业设计论文

基于MATLAB控制系统的仿真与应用毕业设计论文摘要:本论文基于MATLAB控制系统仿真平台,通过对其中一控制系统的仿真分析,运用MATLAB软件实现了该控制系统的数学建模、系统仿真以及系统参数优化等功能。

首先,介绍了控制系统的基本概念和主要组成部分,并提出了仿真和优化的目标。

然后,通过MATLAB软件实现了对该控制系统的数学建模和仿真,并通过仿真结果验证了系统的控制效果。

最后,通过参数优化方法对系统的控制参数进行了优化,并进一步提高了系统的控制性能和稳定性。

关键词:MATLAB控制系统;仿真;参数优化1.引言控制系统是现代自动化技术中重要的组成部分,广泛应用于各个领域。

控制系统的性能和稳定性对于保证系统的正常运行具有重要作用。

而仿真分析和参数优化是提高控制系统性能和稳定性的重要手段。

MATLAB是一种功能强大、灵活性高的工程计算软件,被广泛应用于各个领域的仿真分析和参数优化。

2.控制系统的数学建模和仿真控制系统的数学建模是控制系统仿真的基础。

通过对控制系统的数学模型的建立,可以利用MATLAB软件进行系统的仿真分析。

本文选择了其中一控制系统作为研究对象,通过对该系统进行数学建模,得到了控制系统的状态方程和传递函数。

然后,利用MATLAB软件对该控制系统进行了仿真分析,并得到了系统的时间响应和频率响应等仿真结果。

3.控制系统参数优化控制系统参数优化是提高系统控制性能和稳定性的关键步骤。

本文采用了一种常用的参数优化方法,即遗传算法。

通过对遗传算法的原理和步骤进行介绍,对控制系统的控制参数进行了优化。

通过MATLAB软件实现了该方法,并得到了最优的系统参数。

4.结果分析与讨论通过系统的仿真和参数优化,本文得到了一组最优的系统参数,并对比了原始参数和优化参数的仿真结果。

仿真结果表明,经过参数优化后,系统的控制性能和稳定性得到了显著改善。

5.结论本文基于MATLAB控制系统仿真平台,实现了对其中一控制系统的数学建模、系统仿真以及系统参数优化等功能。

MATLAB与控制系统仿真实验指导书

MATLAB与控制系统仿真实验指导书

《MATLAB与控制系统仿真》实验指导书(2011年第一版)西安邮电学院自动化学院2011年6月目录前言 (1)MATLAB语言实验项目 (3)实验一熟悉MATLAB集成环境与基础运算 (3)实验二 MATLAB的基本计算 (7)实验三 MATLAB图形系统 (9)实验四 MATLAB程序设计 (13)实验五 MATLAB函数文件 (15)实验六MATLAB数据处理与多项式计算 (17)实验七 SIMULINK仿真实验 (21)前言MATLAB 产品家族是美国 MathWorks公司开发的用于概念设计、算法开发、建模仿真、实时实现的理想的集成环境。

是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和SIMULINK两大部分。

MATLAB由于其完整的专业体系和先进的设计开发思路,使得 MATLAB 在多种领域都有广阔的应用空间,特别是在科学计算、建模仿真以及系统工程的设计开发上已经成为行业内的首选设计工具,它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB软件工具在自动化专业、测控技术与仪器和电气工程及其自动化等专业的本科生学习中,经常用来计算、仿真和设计,尤其是MATLAB软件的仿真功能,能使学生对所学知识有更加深入的理解和分析。

《MATLAB与控制系统仿真》课程,和《自动控制原理》、《现代控制理论》、《数字信号处理》、《电力电子技术》等重要的专业课程相互支撑、相辅相成,同时也有利于学生完成课程设计和毕业设计等实践教学环节。

实验一 基于Matlab的控制系统仿真

实验一 基于Matlab的控制系统仿真

实验一 基于Matlab 的控制系统模型姓名 学号 班级一、实验目的1) 熟悉Matlab 的使用环境,学习Matlab 软件的使用方法和简单编程方法。

2) 学习使用Matlab 软件进行拉氏变换和拉式反变换的方法。

3) 学习使用Matlab 软件建立、转换连续系统数学模型的方法。

4) 学习使用Matlab 软件分析控制系统稳定性的方法。

二、实验原理1. 拉氏变换和反拉氏变换(1) 拉氏变换syms a w tf1=exp(-a*t)laplace(f1)f2=2laplace(f2)f3=t*exp(-a*t)laplace(f3)f4=sin(w*t)laplace(f4)f5=exp(-a*t)*cos(w*t)laplace t-t (f5)(2) 拉氏反变换syms s a wf 1=1/silaplace(f 1)f 2=1/(s+a)ilaplace(f 2)f 3=1/s^2ilaplace(f 3)f 4=w/(s^2+w^2)ilaplace(f 4)f 5=1/(s*(s+2)^2*(s+3))ilaplace(f 5)…2. 控制系统模型的建立和转化传递函数模型:112m112+()+m m n n nb s b s b num G s den a s a s b --++==++……零极点增益模型:1212()()()()()()()m ns z s z s z G s k s p s p s p ---=---(1) 建立系统传递函数模型22(1)()(2)(3)56s s s sG s s s s s ++==++++num=[1,1,0]den=[1,5,6]Gs1=tf(num,den)(2) 建立系统的零极点模型z=[0,-1]p=[-2,-3]k=[1]Gs1=zpk(z,p,k)(3) 传递函数模型转化为零极点模型num=[1,1,0]den=[1,5,6]Gs1=tf(num,den)[z,p,k]=tf2zp(num,den)Gs2=zpk(z,p,k)(4) 零极点模型转化为传递函数模型z=[0,-1]p=[-2,-3]k=[1]Gs1=zpk(z,p,k)[num,den]=zp2tf(z',p',k)Gs2=tf(num,den)3. 用Matlab 进行传递函数部分分式展开5434321139+52s+26()1035+50s+241 2.530.5 1s+4s+3s+2s+1num s s s G s den s s s ++==++-=++++num=[1 11 39 52 26]den=[1 10 35 50 24][r,p,k]=residue(num,den)4. 连续系统稳定性分析已知传递函数,试求该系统的闭环极点并判断系统的稳定性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4章MatLab的程序设计MatLab是一个工具、开发平台,同时它也是一门编程语言。

与在命令窗口用交互的方式工作相比,通过程序运行来解决实际问题,其效率更高,因此,凡是复杂的、大型的应用都是以程序的方式执行。

相对其它高级语言,MatLab更简单、编程的效率更高、调试过程也更容易。

MatLab中的程序文件是以m为后缀,所以通常将MatLab的程序文件称为m文件。

MatLab提供了两种形式的m文件,即:脚本(Script)式m文件(就简称m文件)、函数型m文件。

在MatLab中已经嵌入了一个功能强大的集成开发环境——m文件编辑器,用它来进行程序的编辑、修改、调试、运行等,完成应用开发工作。

4.1 MatLab程序设计基础通过前面内容的学习,大家对MatLab已经有了一个初步的认识和印象,到目前为止,我们都是在“命令”窗口中,以交互的方式运行,完成我们的工作。

实际上简单的m文件,就是一个批处理程序,它是若干条命令的集合。

例:4.1.1 M文件规则和属性函数M文件必须遵循一些特定的规则。

除此之外,它们有许多的重要属性,这其中包括:1. 函数名和文件名必须相同。

例如,函数fliplr存储在名为fliplr.m文件中。

2. MATLAB头一次执行一函数个M文件时,它打开相应的文本文件并将命令编辑成存储器的内部表示,以加速执行以后所有的调用。

如果函数包含了对其它函数M文件的引用,它们也同样被编译到存储器。

普通的脚本M文件不被编译,即使它们是从函数M文件内调用;打开脚本M文件,调用一次就逐行进行注释。

页脚内容13. 在函数M文件中,到第一个非注释行为止的注释行是帮助文本。

当需要帮助时,返回该文本。

例如,» help fliplr返回上述前八行注释。

4. 第一行帮助行,名为H1 行,是由lookfor命令搜索的行。

5. 函数可以有零个或更多个输入参量。

函数可以有零个或更多个输出参量。

6. 函数可以按少于函数M文件中所规定的输入和输出变量进行调用,但不能用多于函数M文件中所规定的输入和输出变量数目。

如果输入和输出变量数目多于函数M文件中function语句一开始所规定的数目,则调用时自动返回一个错误。

相对于函数m文件,脚本式m文件就简单多了,它没有严格的格式要求,只要将有关的命令或函数一一敲入即可,但是还是有几个问题需要注意:1. m文件的名称不得与MatLab的内部函数同名、第一个字符不得为数字(这点与变量的命名规则相同);2. 最好在文件的头部加上注释,对该m文件的作用、功能作一个简要说明,而在一些重要命令行后也加上注释行,以方便使用者阅读、查找;3. 要特别注意m文件的保存路径或位置,如果不是保存在MatLab默认的路径下,可以使用addpath函数来设置、添加路径,否则,m文件不能运行。

脚本式m文件与函数m文件还有一个重要区别:脚本式m文件中的变量均为全局变量,而函数m文件中的变量则是局部变量。

这可以从这两种程序文件运行后在Workspace中留下痕迹看出。

当然,在函数m文件中也可以专门将某些变量定义为全局变量(关键字是:global)。

不过,在使用全局变量(函数m文件中)时应特别注意:①.全局变量需要函数体的变量赋值语句之前定义或说明;②.全局变量名最好是大写,而且要尽量长,能反映它本身的含义;页脚内容2③.实际编程时,全局变量也要尽可能少用,因为一旦它在一个地方被改变,那么其它包括该变量的函数中都得改变,有时可能会出现意想不到情况。

4.1.2 M文件的组成函数M文件实例:function f=fact(n)%函数定义行%Compute a factorial value %H1行%FACT (N)return the factorial of N,%usually denoted by N %帮助文本%Put simply,FACT (N)is PROD (1:N )%注释f=prod (1:N ); %函数体一个完整的函数M文件通常包括:①. 函数定义行:定义函数名以及输入、输出变量的数目和顺序;②. H1行:对该函数进行概括性的描述(可用help和Lookfor命令调出此行);③. 帮助文本:这是比H1行更详细的帮助信息,使用help命令时与H1行一起显示;④. 函数体:这是函数M文件的主要部分,程序的功能都在此部分实现;⑤. 注释:对程序行的意义进行解释(与H1行一样都是用%开头)。

有的函数M文件还包含return语句!页脚内容34.1.3 M文件编辑器介绍1. m文件编辑器的启动★在命令窗口中敲入:edit★点击工具栏中的新建图标★从菜单file/new/M-file中启动2. m文件编辑器的界面★菜单栏★工具栏★编辑窗口3. m文件的运行★在m文件编辑器内★在命令窗口中运行在命令窗口直接输入m文件名,回车即可,但函数m文件通常还必须带参数才能运行,也可以利用feval函数来运行函数m文件,其格式如下:feval('functionname', arg1, arg2, ...)对于脚本式m文件,还可以用run函数在命令窗口中运行存在的m文件。

格式:run ‘m文件名’(不必带文件的后缀)页脚内容44.1.4 对函数M文件的调用凡是以函数m文件形式保存的程序文件,均可以被其它函数m文件或脚本m文件所调用。

例:①先定义一个函数m文件:%计算阶乘function y=jiech(n)y=1;for i=1:ny=y*i;end②编写m文件实现对上述函数m文件的调用:function z=dy(n)z=log(jiech(n));4.1.5数据类型与结构MatLab的数据类型前面已经介绍,下面是它们之间的关系图:页脚内容5MatLab中结构(教材中称构架)的概念和C语言中的类似,它也包含一个或多个域(数据容器),每个域可以包含任何类型的数据(这一点与单元数组又相似),且相互独立。

下面通过实例来说明如何建立并访问结构。

用结构建立学生的数据记录。

①.例1:在命令窗口直接创建(或用m文件编辑器)创建。

student.num=20070135;='李四';student.age=20;student.weight=67;student.height=1.68;student.test=[90 85 76 63 88 54 79];从这个例子可以看出结构建立的方法:直接建立结构和各个域,同时给各域赋值(也可以不赋值),结构和域之间用点“.”连接。

②.用关键字“struct”创建,格式如下:页脚内容6s = struct('field1', values1, 'field2', values2, ...)例2:用关键字“struct”创建。

student=struct('num',20070135,'name','zhangsan','weight',1.68,'height',75,'test',…[98 87 65 95 78])③.结构的操作★结构域的访问★结构域的添加、修改直接添加或用函数setfield()添加;直接修改或用函数setfield()修改。

★结构域的删除用函数rmfield()删除某个域。

格式:s=rmfield(s,'fieldname')4.2 MatLab程序的控制程序的流程控制是高级语言中必不可少、也是非常重要的部分,要编写出高质量的程序,实现对复杂系统的控制、仿真,这一点也是必须掌握的。

MatLab提供了多种控制结构,包括:顺序结构、选择(分支)结构以及循环结构,每种结构都有各自的控制机制,利用它们及其它们的组合可以实行功能强大的、复杂的应用。

4.2.1顺序结构顺序结构最简单,它是一种最基础的程序结构,也是最遵循逻辑思路的程序代码结构,批处理文件就页脚内容7是典型的顺序语句文件。

这种语句不需要任何特殊的流控制,按照语句的排列顺序,一条一条的执行,直至结束。

例:4.2.2选择(或分支)结构如果程序中需要根据一定条件来执行不同的操作时,可以使用条件语句来构成选择或分支结构。

在MatLab中可利用if语句来实现这种结构。

if语句的结构通常有以下三种形式:1.单分支结构:这种分支结构最简单,格式为:if 表达式语句end它只有一个判断语句,当表达式为真时,就执行语句,否则就不执行。

例:function f=ifone(x)if x>=0fprintf('%f is a Positive number.\n',x);end2.双分支结构:页脚内容8此时,采用if-else-end结构,语法是:if 表达式语句1else语句2end即:表达式为真,系统执行语句1,否则将转入语句2执行。

例:将上面的例子扩充function f=ifone(x)if x>=0fprintf('%f is a positive number.\n',x);elsefprintf('%f is a negative number.\n',x);end3.多分支结构:仍采用if-else-end结构,但语法上略有不同,形式如下:if 表达式1页脚内容9语句1 %表达式1为真执行语句1 elseif 表达式2语句2 %表达式2为真执行语句2 elseif表达式3语句3 %表达式3为真执行语句3……else语句n %所有表达式为假执行语句n end例:编写一个成绩打印程序。

function f=chengji(x)if x>=90fprintf('%d 分,成绩为优\n',x)elseif x>=80fprintf('%d 分,成绩为良\n',x)elseif x>=70fprintf('%d 分,成绩为中\n',x)页脚内容10elseif x>=60fprintf('%d 分,成绩为及格\n',x)elsefprintf('%d 分,成绩为不及格\n',x)end4.2.3开关语句(Switch分支结构)开关语句实际上也是分支结构的一种,是一种多选择的分支语句,作用与上面介绍的多分支结构相似,这是MatLab6.0以上版本新增加的功能。

该结构的一般调用格式如下:Switch expressionCase value1StatementsCase value2Statements……………….OtherwiseStatements页脚内容11end例:采用switch结构的一个简单应用。

相关文档
最新文档