matlab复习.docx
- 文档编号:5326696
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:27
- 大小:341.31KB
matlab复习.docx
《matlab复习.docx》由会员分享,可在线阅读,更多相关《matlab复习.docx(27页珍藏版)》请在冰点文库上搜索。
matlab复习
2-16
x=0:
0.05:
pi;
y1=x;
y2=x.^2;
y3=-x.^2;
y4=x.*sin(x);
plot(x,y1,x,y2,x,y3,x,y4);
M图形是我们进行数据分析、观察系统响应的重要方式,MATLAB提供了丰富的绘图函数。
既可以绘制基本二维图形、也可以绘制专业图形(如饼图、条形图、球型图等)、还可以对图形进行各种处理。
此外,MATLAB语言还是一种计算机高级编程语言,并提供了与C、C++、Fortran等语言的接口。
而m文件是编辑、存储MATLAB程序源代码的基本形式,有着广泛的应用。
在本章内容里,主要介绍二维图形、三维图形的绘制及图形标注的方法、m文件的程序控制和m文件编写方法。
常用的绘图及图形标注函数如下:
plot()——绘制二维图形plot3()——绘制三维图形
xlabel()——给x坐标轴添加标签ylabel()——给y坐标轴添加标签
title()——给图形添加标题legend()——给图形添加图例说明
text()——在图形窗口指定位置添加文本说明
gtext()——在图形窗口由鼠标指定位置添加文本说明
M文件程序控制字符如下:
for-end——MATLAB的for循环结构
while-end——MATLAB的while循环结构
if-then-else-end——MATLAB的分支选择结构
function——MATLAB函数文件定义符
五、实验数据
1.自由练习在同一窗口用不同颜色线型绘制一个周期内的正弦曲线和余弦曲线,并添加标题、坐标系标签、图例。
>>x=0:
pi/90:
2*pi;
>>y1=sin(3*x);
>>y2=cos(3*x);
>>subplot(121);
>>plot(x,y1,'b');grid;xlabel('x');ylabel('y1');
>>title('正弦曲线');
>>legend('图一正弦曲线');
>>subplot(122);
>>plot(x,y2,'m');grid;xlabel('x');ylabel('y2');
>>title('余弦曲线');
>>legend('图二余弦曲线');
2、绘制下列数学函数定义的三维网格曲面
x=-8:
0.5:
8;
y=x';
[X,Y]=meshgrid(x,y);
Z=1./((sqrt((1-X).^2+Y.^2)+eps))+1./((sqrt((1+X).^2+Y.^2)+eps));
mesh(X,Y,Z)
xlabel('X'),ylabel('Y'),zlabel('Z')
实验三控制系统数学模型及其转换
一、实验目的
1、掌握控制系统常用数学模型Matlab表示
2、利用Matlab实现数学模型之间的转换
二、实验学时:
2学时
三、实验原理
1、已知传递函数模型:
,由分子和分母多项式可以唯一确定传递函数。
分子向量num=[bmbm-1…b1b0];
分子向量den=[anan1…a1a0];
Matlab工具箱中,用命令tf()可以建立一个传递函数模型,或将状态空间模型和零极点增益模型变化伟零极点增益模型。
2、Matlab工具箱中,用命令zpk()可以建立零极点增益函数模型,或将传递函数模型和状态空间模型变化伟零极点增益模型。
3、Matlab工具箱中,用命令ss()可以建立状态空间模型,或将传递函数模型和零极点增益模型变化伟零极点增益模型。
4、函数tf2ss用于将传递函数化成状态空间模型,调用格式如:
[A,B,C,D]=tf2ss(num,den);
5、函数tf2zp用于将传递函数化成零极点模型,调用格式如:
[z,p,k]=tf2ss(num,den);
6、函数zp2ss用于将零极点增益模型化为状态空间模型,调用格式如:
[A,B,C,D]=zp2ss(z,p,k);
7、函数c2d用于将连续系统化为离散系统模型,调用格式如:
Sysd=c2d(sys,Ts);
8、函数cannon用于将控制系统模型化为对角标准型,调用格式如:
Csys=cannon(sys,’modal’)
四、实验内容
1、已知某SISO系统传递函数为:
,用MATLAB表示,查看模型属性,并修改延迟时间为5秒,修改分子多项式为s-1。
2、在图3-1所示的系统串连框图中,已知sys1的传递函数为:
,系统sys2的传递函数为:
,试求系统串连后的仿真模型。
图3-1SISO系统模型串连示意图
实验数据
1、已知某SISO系统传递函数为:
,用MATLAB表示,查看模型属性,并修改延迟时间为5秒,修改分子多项式为s-1。
num=[11];den=[123];
>>sys1=tf(num,den,'inputdelay',2)
Transferfunction:
s+1
exp(-2*s)*-------------
s^2+2s+3
>>get(sys1)
num:
{[011]}
den:
{[123]}
Variable:
's'
Ts:
0
ioDelay:
0
InputDelay:
2
OutputDelay:
0
InputName:
{''}
OutputName:
{''}
InputGroup:
[1x1struct]
OutputGroup:
[1x1struct]
Notes:
{}
UserData:
[]
修改延迟时间为5秒,修改分子多项式为s-1。
>>num=[1-1];den=[123];
sys1=tf(num,den,'inputdelay',5)
Transferfunction:
s-1
exp(-5*s)*-------------
s^2+2s+3
>>get(sys1)
num:
{[01-1]}
den:
{[123]}
Variable:
's'
Ts:
0
ioDelay:
0
InputDelay:
5
OutputDelay:
0
InputName:
{''}
OutputName:
{''}
InputGroup:
[1x1struct]
OutputGroup:
[1x1struct]
Notes:
{}
UserData:
[]
1、在图3-1所示的系统串连框图中,已知sys1的传递函数为:
,系统sys2的传递函数为:
,试求系统串连后的仿真模型。
num=[11];den=[125];
G1=tf(num,den)
Transferfunction:
s+1
-------------
s^2+2s+5
>>G2=tf(5,[130])
Transferfunction:
5
---------
s^2+3s|
>>sys=series(G1,G2)
Transferfunction:
5s+5
---------------------------
s^4+5s^3+11s^2+15s
1、时域分析
1)根据下面传递函数模型:
绘制其单位阶跃响应曲线并从图上读取最大超调量,并求出单位脉冲响应曲线。
>>num=[52530];
>>den=[16108];
>>step(num,den)
>>sys=tf(num,den)
Transferfunction:
5s^2+25s+30
----------------------
s^3+6s^2+10s+8
最大超调量:
num=[52530];
den=[16108];
step(num,den)
>>grid
>>impulse(num,den)
>>grid
(2)典型二阶系统传递函数为:
当ζ=0.7,ωn取2、4、6、8、10、12的单位阶跃响应。
forwn=2:
2:
12;
num=[wn^2];
den=[11.4*wnwn^2]
sys=tf(num,den);
step(num,den);
holdon
end
(3)典型二阶系统传递函数为:
当ωn=6,ζ取0.2、0.4、0.6、0.8、1.0、1.5、2.0的单位阶跃响应。
forkesi=0.2:
0.2:
1.0;
num=36;
den=[112*kesi36]
sys=tf(num,den);
step(num,den);
holdon
end
forkesi=1.0:
0.5:
2.0;
num=36;
den=[112*kesi36]
sys=tf(num,den);
step(num,den);
holdon
end
2、频域分析
(1)典型二阶系统传递函数为:
当ζ=0.7,ωn取2、4、6、8、10、12的伯德图
forwn=2:
2:
12;
num=[wn^2];
den=[11.4*wnwn^2]
sys=tf(num,den);
bode(num,den);
holdon
end
(2)典型二阶系统传递函数为:
当ωn=6,ζ取0.2、0.4、0.6、0.8、1.0、1.5、2.0的伯德图。
forkesi=0.2:
0.2:
1.0;
num=36;
den=[112*kesi36]
sys=tf(num,den);
bode(num,den);
holdon
end
forkesi=1.0:
0.5:
2.0;
num=36;
den=[112*kesi36]
sys=tf(num,den);
bode(num,den);
holdon
end
(3)已知二阶系统传递函数
绘制阻尼系数
分别为1.2,1.0,0.5和0.25时系统的Nyquist曲线。
forkesi=1.0:
0.2:
1.2;
num=1;
den=[12*kesi1]
sys=tf(num,den);
nyquist(num,den);
holdon
end
forkesi=0.25:
0.25:
0.5;
num=1;
den=[12*kesi1]
sys=tf(num,den);
nyquist(num,den);
holdon
end
3、根轨迹分析
根据下面负反馈系统的开环传递函数,绘制系统根轨迹,并分析系统稳定的K值范围。
num=[1];
den=[1,3,2,0];
sys=tf(num,den)
rlocus(sys)
四、实验内容:
1、已知单位负反馈系统开环传递函数为:
试设计一滞后校正网络,满足下列性能指标:
(1)单位斜坡输入作用下,系统稳态误差
(2)校正后系统相位裕量满足:
43° (3)校正后系统的剪切频率 ≥3.6rad/s s=tf('s'); G=50/(s*(0.2*s+1)*(0.01*s+1)); figure (1)%¸Ã¾äÊÇ¿ª³öµÚÒ»¸öͼÐδ°¿Ú£¬×¼±¸»æÖÆBodeͼ margin(G) figure (2) step(feedback(G,1)) 2、已知某单位负反馈系统被控对象的传递函数为; 设计一个超前校正网络 ,使系统满足如下要求: (1)单位斜坡输入作用下,系统稳态误差小于0.001; (2)校正后系统的相位裕量Pm范围是: 40°~50° s=tf('s'); G=1000/(s*(2*s+1)*(0.002*s+1)); margin(G) s=tf('s'); G=1000/(s*(2*s+1)*(0.002*s+1)); sys=feedback(G,1); step(sys) s=tf('s'); G=1000/(s*(2*s+1)*(0.002*s+1)); [mag,phase,w]=bode(G); [Gm,Pm]=margin(G); QWPm=45; FIm=QWPm-Pm+5; FIm=FIm*pi/180; alfa=(1-sin(FIm))/(1+sin(FIm)); adb=20*log10(mag);am=10*log10(alfa); wc=spline(adb,w,am); T=1/(wc*sqrt(alfa)); alfat=alfa*T; Gc=tf([T1],[alfat1]) Transferfunction: 0.07555s+1 -------------- 0.009329s+1 s=tf('s'); G=1000/(s*(2*s+1)*(0.002*s+1)); Gc=(0.07555*s+1)/(0.009329*s+1); margin(Gc*G) s=tf('s'); G=1000/(s*(2*s+1)*(0.002*s+1)); Gc=(0.07555*s+1)/(0.009329*s+1); step(feedback(Gc*G,1)) 4、如果已知某被控对象传递函数如下所示: 试根据Ziegler-Nichols经验整定公式分别设计P、PI、PID控制器,并观察其单位阶跃响应曲线。 K=1;T=15;tao=5; s=tf('s'); Gz=K/(T*s+1); [np,dp]=pade(tao,2); Gy=tf(np,dp); G=Gz*Gy; PKp=T/(K*tao) step(feedback(PKp*G,1)),holdon PIKp=0.9*T/(K*tao); PITI=3*tao; PIGc=PIKp*(1+1/(PITI*s)) step(feedback(PIGc*G,1)),holdon PIDKp=1.2*T/(K*tao); PIDTI=2*tao; PIDTd=0.5*tao; PIDGc=PIDKp*(1+1/(PIDTI*s)+PIDTd*s/((PIDTd/10)*s+1)) step(feedback(PIDGc*G,1)),holdon [PIDKp,PIDTI,PIDTd] gtext('P'); gtext('PI'); gtext('PID'); PKp=3 Transferfunction: 40.5s+2.7 ------------ 15s Transferfunction: 99s^2+36.9s+3.6 --------------------- 2.5s^2+10s ans=3.600010.00002.5000 实验六: Simulin建模与仿真 一、实验目的 1、掌握Simulink建模与仿真的基本方法。 2、熟悉Simulink基本模块库及主要元件的使用方法。 二、实验学时: 4学时 三、实验原理: 1、Simulink仿真过程 在已知系统数学模型或系统框图的情况下,利用Simulink进行建模仿真的基本步骤如下。 (1)启动Simulink,打开Simulink库浏览器。 (2)建立空白模型窗口。 (3)由控制系统数学模型或结构框图建立Simulink仿真模型。 (4)设置仿真参数,运行仿真。 (5)输出仿真结果。 2、Simulink建模与仿真基本方法 根据给定的数学模型或控制系统框图,可建立Simulink仿真模型。 下面以图3-1所示的控制系统框图为例,说明Simulink建模与仿真的基本方法。 图中R是单位阶跃输入信号,Y为系统输出响应。 建立图6-3所示系统框图的Simulink仿真模型的基本方法如下。 1.启动MATLAB/Simulink工具箱 依次启动MATLAB软件、Simulink模块库浏览器后,如图6-1所示。 2.建立Simulink空白模型 Simulink空白模型的建立可通过如下方法进行。 3、在MATLAB主窗口中选择【File】→【New】→【Model】命令。 4、在Simulink模块库浏览器窗口中选择【File】→【New】→【Model】命令。 5、单击Simulink模块库浏览器工具栏中的 (Newmodel)工具。 图6-1闭环控制系统框图 通过上述方法可以打开Simulink空白模型,如图6-2所示。 并可将其保存为后缀是mdl的文件(Simulink仿真模型的文件存储格式),例如Example_Model.mdl。 在保存Simulink模型文件的时候,为了实现向下兼容,MATLABR2008/Simulink7.1允许将模型保存为其他版本的Simulink模型。 图6-2空白模型窗口 3.根据系统框图选择模块 构建Simulink仿真模型,首先需要知道所需模块所属的子模块库名称。 如图6-3所示的闭环控制系统,用到了单位阶跃信号、符号比较器、传递函数模型和信号输出模块。 因此可确定它们分别隶属于信号源模块库、数学模块库、连续系统模块库和输出模块库。 在模块库浏览器中打开相应的模块库,并选择所需模块。 如图3-3所示,选中信号源模块库的单位阶跃信号模块。 图中被选中的模块成高亮显示。 图6-3在Simulink模块库浏览器中选择所需模块 4.模块的复制与删除操作 在找到所需模块后,需要将模块复制到Simulink空白模型上,具体操作方法如下。 6、在模块库选中模块后,按住鼠标左键不放并拖动到Simulink模型窗口的指定位置,释放鼠标左键,完成模块的复制操作。 7、在模块库选中模块后,右击该模块,在弹出的快捷菜单中选择【AddtoExample_Model】命令,将模块添加到指定模型窗口,完成模块的复制操作。 8、在模块库选中模块后,在库浏览器窗口中选择【Edit】→【Copy】命令,用鼠标单击目标模型窗口中指定的位置,再从模型窗口中选择【Edit】→【Paste】命令,完成模块的复制操作。 9、当模型窗口已有所需模块时,也可以直接从该处复制模块,操作方是右击所选模块,在弹出的快捷菜单中选择【Copy】命令,然后右击模型窗口空白处,在弹出的快捷菜单中选择【Paste】命令来完成粘贴任务。 此外,也可以使用编辑菜单进行复制、粘贴操作。 当然还可以用鼠标右键按住所需复制的模块不放,并拖动到指定位置完成复制操作,这可大大加快建模速度。 按照上述方法,可将阶跃信号模块、符号比较器、传递函数模型、信号输出模块一一复制到Exmaple_Model窗口,如图6-4所示。 图6-4完成模块复制的模型窗口 当需要删除模块时,在模型窗口选中指定模块,按下【Delete】键完成删除,也可以右击选中的模块,在弹出的快捷菜单中选择【Delete】命令来完成删除操作,还可以选择【Edit】→【Delete】命令来完成删除操作。 5.模块的连接 在完成所需模块的复制操作之后,需要将模块连接起来,构成Simulink仿真模型,具体方法如下。 10、将鼠标移动到模块的输出端上,当鼠标出现“十字”符号后,单击鼠标并拖动到下级模块的输入端上,完成模块信号的连接,如图3-5(a)、(b)所示。 11、选中信号输出模块,按下键盘【Ctrl】键并单击下级模块完成模块信号的连接。 12、在已存在的信号线上引出新的信号线时,可用鼠标右键单击源信号线,并按住不放拖动到指定位置,完成信号线的分支连接。 如图6-5所示。 在模块没有完成连接时,以红色虚线显示,当连接完成后以黑色实线显示。 图6-5模块的连接示意图 图66利用鼠标右键引出信号线分支 将各子模块连接起来后,构成如图6-7所示的系统模型。 图6-7完成连接的Simulink模型 6模块的参数设置 在完成模块的信号线连接并建立起系统的Simulink仿真模型后,需要设置模块的参数。 在Simulink模型里,双击需要修改参数的模块,弹出参数设置对话框。 例如,在图6-9中,双击阶跃信号模块,弹出如图6-8所示的参数设置对话框。 在这里可设置阶跃信号参数,比如将阶跃发生时间由默认的1秒改为0.5秒。 图6-8阶跃信号参数设置对话框 在图3-7中双击Sum(加法器)模块,弹出其参数设置对话框,如图6-9所示,将反馈信号连接改为负反馈。 在图6-9中,符号列表中的“|”是用来定义加法器模块输入端口标识符在图形外部的显示位置,输入端口数及操作符号由图3-9中“Listofsigns”栏的加、减符号列表来确定。 图6-9加法器属性参数设置对话框 下一步修改传递函数模型,在图6-8中双击TransferFcn模块,弹出其参数设置对话框,如图6-10所示。 根据被控对象传递函数,在“Numeratorcoefficient”文本框中输入分子多项式系数向量,在“Denominatorcoefficient”文本框中输入分母多项式系数向量,从而建立被控对象的Simulink仿真模型。 图6-10连续系统传递函数模块设置对话框 最后对Scope(输出信号接收器)模块进行参数设置。 在图6-8中,首先双击Scope模块,弹出如图6-11所示的仿真数据输出窗口,然后单击Scope工具栏中的 (Parameters)工具,弹出Scope基本参数设置对话框,如图6-12所示。 在Numberofaxes文本框中设置输入信号数。 在Timerange文本框中设置示波器显示时间范围,默认为系统自动设定显示时间范围,用户也可以进行修改。 “TickLabel选项框可以选择是否显示坐标系标签。 图6-11Scope模块显示窗口图6-12Scope基本参数设置对话框 单击“Datahistory”选项卡,切换到历史数据参数设置面板,如图6-13所示,在“Limitdatapointstolast”栏可以设置示波器显示的仿真数据点数。 系统默认只显示最近的5000个数据点,用户可以修改该数据,也可以取消“Limitdatapointstolast”复选框的勾选,使示波器显示所有仿真数据点。 在“Savedatatoworkspace”栏,可以将输出的数据保存到工作空间,此时需要指定保存输出数据的变量名称及其保存格式。 例如将仿真输出数据保存到工作空间,变量名为“y”,格式为“Array”(矩阵)形式。 图6-13Scope历史数据参数设置对话框 7仿真参数设置 在模型窗口选择【Simulation】→【ConfigurationParameters】命令,打开“ConfigurationParameters”对话框,在这里可以设置Simulink的仿真求解器参数。 仿真参数设置是Simulink动态仿真的一个优点、亮点,也是一个难点,在后面将详细讲到。 S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 复习