MATLAB实验指导书资料.docx
《MATLAB实验指导书资料.docx》由会员分享,可在线阅读,更多相关《MATLAB实验指导书资料.docx(39页珍藏版)》请在冰豆网上搜索。
MATLAB实验指导书资料
《控制系统仿真》课程
课程编号:
421406
实验指导书
主撰人:
刘伟元
审核人:
方智文
单位:
通信与控制工程系
二O一二年6月
目录
实验序号
实验名称
实验一
MATLAB的基本使用方法
实验二
MATLAB的运算
实验三
MATLAB计的可视化设计
实验四
MATLAB的程序设计
实验五
基于MATLAB的控制系统建模
实验六
基于MATLAB的控制系统分析
实验七
Simulink及常用工具箱应用
实验八
Simulink及常用工具箱应用
前言
1.实验总体目标
通过实验要求学生掌握Matlab的基本操作及方法,掌握软件知识与编程方法,培养学生的动手能力,要求能运用matlab软件进行数学运算与分析,能编写m文件,能对相应专业问题进行仿真建模。
⒉适用专业年级
适用于五年级开设《控制系统仿真》的自动化学生。
⒊实验课时分配
实验项目
实验要求
实验类型
每组人数
实验
学时
MATLAB的基本使用方法
必做
验证
1
2
MATLAB的运算
必做
验证
1
2
MATLAB计的可视化设计
必做
设计
1
2
MATLAB的程序设计
必做
综合
1
2
基于MATLAB的控制系统建模
必做
验证
1
2
基于MATLAB的控制系统分析
必做
设计
1
2
Simulink及常用工具箱应用
选做
综合
1
2
Simulink及常用工具箱应用
选做
设计
1
2
4.实验环境
计算机一台,matlaba仿真软件一套5.实验总体要求
要求学生在规定的课时内完成实验指导书所提出的任务与要求,通过实验要求学生掌握Matlab仿真的一般基础知识,matlab的数值运算,矩阵运算,可视化分析,程序流的设计,系统建模分析,simulink常用工具箱的应用及仿真分析。
6.本课程的重点、难点及教学方法建议
本课程的重点与难点:
数值运算与分析,M文件的编写,运算结果可视化处理,程序设计,系统建模及仿真分析,simulink工具箱应用及仿真分析。
教学方法建议:
要求每个学生熟练掌握Matlab使用方法,实验前预习实验内容并认真写好预习报告,在实验时通过上机编写程序得出结果,发现问题并逐步解决问题,上机结束写出体会。
实验一MATLAB的基本使用方法
实验目的:
了解MATLAB的基本知识以及MATLAB语言的上机环境,学会MATLAB的基本数学运算。
实验类型:
验证
实验步骤:
1、打开电脑,在桌面上找到MATLAB快捷方式,点击进入,进入之后出现如图界面:
界面包括历史操作,工作空间,命令窗口,工具菜单
点击菜单窗口查看相应的功能:
File菜单:
在命令窗口里面输入相应的命令:
>>a=5*3执行后显示:
a=15
>>a=[12;34]
显示:
a=12
34
但输入:
a=[12;34];则什么也不显示,这是因为“;”号的原因
一些常用的特殊变量
特殊变量
取值
特殊变量
取值
ans
inf
eps
NaN
默认变量名
+∞,如:
1/0
容许误差,如:
eps=10^-10=1.0000e-010
不定值如:
0/0
pi
flops
nargin
nargout
3.14
浮点运算数
函数的输入变量数
函数的输出变量数
>>a=[12;34];b=[12;34];c=a*b;
显示:
>>c=710
1522
>>d=a.*b
>>d=14
916
实验二MATLAB的数值、符号运算等
实验目的:
对MATLAB的两种基本数值运算:
矩阵和表达式的实践。
编制简单的数学函数,能进行简单的数学运算。
实验类型:
验证
实验基本知识:
1、基本运算指令符号对象的生成和使用,syms
命令:
符号因式分解函数factor
格式:
factor(X)%参量x可以是正整数、符号表达式阵列或符号整数阵列。
若X为一正整数,则factor(X)返回X的质数分解式。
若x为多项式或整数矩阵,则factor(X)分解矩阵的每一元素。
若整数阵列中有一元素位数超过16位,用户必须用命令sym生成该元素。
命令:
符号表达式的分子与分母函数numden
格式:
[N,D]=numden(A)
说明将符号或数值矩阵A中的每一元素转换成整系数多项式的有理式形式,其中分子与分母是相对互素的。
输出的参量N为分子的符号矩阵,输出的参量D为分母的符号矩阵。
命令搜索符号表达式的最简形式函数simple
格式:
r=simple(S)
%该命令试图找出符号表达式S的代数上的简
单形式,显示任意的能使表达式S长度变短的
表达式,且返回其中最短的一个。
若S为一矩
阵,则结果为整个矩阵的最短形式,而非是每
一个元素的最简形式。
若没有输出参量r,则
该命令将显示所有可能使用的算法与表达式,
同时返回最短的一个。
[r,how]=simple(S)
%没有显示中间的化简结果,但返回能找
到的最短的一个。
输出参量r为一符号,
how为一字符串,用于表示算法。
命令:
符号表达式的化简函数simplify
格式:
R=simplify(S)%说明使用Maple软件中的化简规则,将化简符号矩阵S中每一元素。
命令:
从一符号表达式中或矩阵中找出符号变量函数findsym
格式:
r=findsym(S)%以字母表的顺序返回表达式S中的所有符号变量(注:
符号变量为由字母(除了i与j)与数字构成的、字母打头的字符串)。
若S中没有任何的符号变量,则findsym返回一空字符串。
r=findsym(S,n)%返回字母表中接近x的n个符号变量
命令:
函数的反函数函数finverse
格式:
g=finverse(f)%返回函数f的反函数。
其中f为单值的一元数学函数,如f=f(x)。
若f的反函数存在,设为g,则有g[f(x)]=x。
g=finverse(f,u)%若符号函数f中有几个符号变量时,对指定的符号自变量v计算其反函数。
若其反函数存在,设为g,则有g[f(v)]=v。
命令:
嵌套形式的多项式的表达式函数horner
格式:
R=horner(P)
%若P为一符号多项式的矩阵,该命令将矩阵的每一元素转换成嵌套形式的表达式R。
2:
函数计算器的使用
函数:
funtool
格式:
funtool%该命令将生成三个图形窗口,FigureNo.1用于显示函数f的图形,FigureNo.2用于显示函数g的图形,FigureNo.3为一可视化的、可操作与显示一元函数的计算器界面。
在该界面上由许多按钮,可以显示两个由用户输入的函数的计算结果:
加、乘、微分等。
funtool还有一函数存储器,允许用户将函数存入,以便后面调用。
在开始时,funtool显示两个函数f(x)=x与g(x)=1在区间[-2*pi,2*pi]上的图形。
Funtool同时在下面显示一控制面板,允许用户对函数f、g进行保存、更正、重新输入、联合与转换等操作。
输入命令funtool后,生成的界面如下:
图2-1函数工具funtool界面
图2-2函数f的图形图2-3函数g的图形
说明文本输入框区域:
控制面板的上面几行,可以输入文本:
f=:
显示代表函数f的符号表达式,可在该行输入其他有效的表达式来定义f,再按回车键即可在FigureNo.1中画出图形;
g=:
显示代表函数g的符号表达式,可在该行输入其他有效的表达式来定义g,再按回车键即可在FigureNo.2中画出g图形;
x=:
显示用于画函数f与g的区间。
可在该行输入其他的不同区间,再按回车键即可改变FigureNo.1与FigureNo.2中的区间;
a=:
显示一用于改变函数f的常量因子(见下面的操作按钮)。
可在该行输入不同的常数。
控制按钮区域:
该区域有一些按钮,按下它们将对函数f转换成不同的形式与执行不同的操作。
df/dx:
函数f的导数;
intf:
函数f的积分(没有常数的一个原函数),当函数f的原函数不能用初等函数表示时,操作可能失败;
simplef:
化简函数f(若有可能);
numf:
函数f的分子;
denf:
函数f的分母;
1/f:
函数f的倒数;
finv:
函数f的反函数,若函数f的反函数不存在,操作可能失败;
f+a:
用f(x)+a代替函数f(x);
f-a:
用f(x)-a代替函数f(x);
f*a:
用f(x)+a代替函数f(x);
f/a:
用f(x)/a代替函数f(x);
f^a:
用f(x)^a代替函数f(x);
f(x+a):
用f(x+a)代替函数f(x);
f(x*a):
用f(x-a)代替函数f(x);
f+g:
用f(x)+g(x)代替函数f(x);
f-g:
用f(x)-g(x)代替函数f(x);
f*g:
用f(x)*g(x)代替函数f(x);
f/g:
用f(x)/g(x)代替函数f(x);
g=f:
用函数f(x)代替函数g(x);
swap:
函数f(x)与g(x)互换;
Insert:
将函数f(x)保存到函数内存列表中的最后;
Cycle:
用内存函数列表中的第二项代替函数f(x);
Delete:
从内存函数列表中删除函数f(x);
Reset:
重新设置计算器为初始状态;
Help:
显示在线的关于计算器的帮助;
Demo:
运行该计算器的演示程序;Close:
关闭计算器的三个窗口。
三、实验内容
1、在命令窗口输入下列指令验证符号运算指令例2-1
>>symsxy;
>>R1=collect((exp(x)+x)*(x+2))
>>R2=collect((x+y)*(x^2+y^2+1),y)
>>R3=collect([(x+1)*(y+1),x+y])
例2-2
>>symsxyabct
>>E1=expand((x-2)*(x-4)*(y-t))
>>E2=expand(cos(x+y))
>>E3=expand(exp((a+b)^3))
>>E4=expand(log(a*b/sqrt(c)))
>>E5=expand([sin(2*t),cos(2*t)])
例2-3
>>symsabxy
>>F1=factor(x^4-y^4)
>>F2=factor([a^2-b^2,x^3+y^3])
>>F3=factor(sym('12345678901234567890'))
例2-4
>>symsxyabcd;
>>[n1,d1]=numden(sym(sin(4/5)))
>>[n2,d2]=numden(x/y+y/x)
>>A=[a,1/b;1/cd];
>>[n3,d3]=numden(A)
例2-5
>>symsx
>>R1=simple(cos(x)^4+sin(x)^4)
>>R2=simple(2*cos(x)^2-sin(x)^2)
>>R3=simple(cos(x)^2-sin(x)^2)
>>R4=simple(cos(x)+(-sin(x)^2)^(1/2))
>>R5=simple(cos(x)+i*sin(x))
>>R6=simple((x+1)*x*(x-1))
>>R7=simple(x^3+3*x^2+3*x+1)
>>[R8,how]=simple(cos(3*acos(x)))
例2-6
>>symsxabc
>>R1=simplify(sin(x)^4+cos(x)^4)
>>R2=simplify(exp(c*log(sqrt(a+b))))
>>S=[(x^2+5*x+6)/(x+2),sqrt(16)];
>>R3=simplify(S)
例2-7
>>symsaxyztalphabeta
>>1=findsym(sin(pi*t*alpha+beta))
>>S2=findsym(x+i*y-j*z+eps-nan)
>>S3=findsym(a+y,pi)
例2-8>>symsxpquv;
>>V1=finverse(1/((x^2+p)*(x^2+q)))
>>V2=finverse(exp(u-2*v),u)
例2-9
>>symsxy
>>H1=horner(2*x^4-6*x^3+9*x^2-6*x-4)
>>H2=horner([x^2+x*y;y^3-2*y])
实验三MATLAB计算结果的可视化
一、实验目的:
1、学习MATLAB图形绘制的基本方法;2、熟悉和了解MATLAB图形绘制程序编辑的基本指令;3、熟悉掌握利用MATLAB图形编辑窗口编辑和修改图形界面,并添加图形的各种标注;4、掌握plot、subplot的指令格式和语法。
二、实验基本知识:
1:
plot(x,y)------绘制由x,y所确定的曲线;
2:
多组变量绘图:
plot(x1,y1,选项1,x2,y2,选项2,……);
3:
双Y轴绘图:
plotyy()函数;
4:
图形窗口的分割;
5图形编辑窗口的使用。
三、实验内容
练习A
【1】二维曲线绘图基本指令演示。
本例运作后,再试验plot(t),plot(Y),plot(Y,t),以观察产生图形的不同。
t=(0:
pi/50:
2*pi)';k=0.4:
0.1:
1;Y=cos(t)*k;plot(t,Y)
plot指令基本操作演示
【2】用图形表示连续调制波形y=sin(t)sin(9t)及其包络线。
t=(0:
pi/100:
pi)';y1=sin(t)*[1,-1];y2=sin(t).*sin(9*t);t3=pi*(0:
9)/9;y3=sin(t3).*sin(9*t3);plot(t,y1,'r:
',t,y2,'b',t3,y3,'bo')axis([0,pi,-1,1])
【3】通过绘制二阶系统阶跃响应,综合演示图形标识。
本例比较综合,涉及的指令较广。
请耐心读、实际做、再看例后说明,定会有匪浅收益。
clf;t=6*pi*(0:
100)/100;y=1-exp(-0.3*t).*cos(0.7*t);
tt=t(find(abs(y-1)>0.05));ts=max(tt);
plot(t,y,'r-','LineWidth',3);
axis([-inf,6*pi,0.6,inf]);
set(gca,'Xtick',[2*pi,4*pi,6*pi],'Ytick',[0.95,1,1.05,max(y)]);
gridon;
title('\ity=1-e^{-\alphat}cos{\omegat}')
text(13.5,1.2,'\fontsize{12}{\alpha}=0.3')
text(13.5,1.1,'\fontsize{12}{\omega}=0.7')
holdon;
plot(ts,0.95,'bo','MarkerSize',10);
holdoff
cell_string{1}='\fontsize{12}\uparrow';
cell_string{2}='\fontsize{16}\fontname{隶书}镇定时间';
cell_string{3}='\fontsize{6}';
cell_string{4}=['\fontsize{14}\rmt_{s}='num2str(ts)];
text(ts,0.85,cell_string)
xlabel('\fontsize{14}\bft\rightarrow')
ylabel('\fontsize{14}\bfy\rightarrow')
二阶阶跃响应图的标识
【4】通过图形编辑窗口对上图设计和修改
【5】观察各种轴控制指令的影响。
演示采用长轴为3.25,短轴为1.15的椭圆。
注意:
采用多子图(图6.2-4)表现时,图形形状不仅受“控制指令”影响,而且受整个图面“宽高比”及“子图数目”的影响。
t=0:
2*pi/99:
2*pi;
x=1.15*cos(t);y=3.25*sin(t);
subplot(2,3,1),plot(x,y),axisnormal,
gridon,
title('NormalandGridon')
subplot(2,3,2),plot(x,y),axisequal,
gridon,
title('Equal')
subplot(2,3,3),plot(x,y),axissquare,
gridon,
title('Square')
subplot(2,3,4),plot(x,y),axisimage,
boxoff,
title('ImageandBoxoff')
subplot(2,3,5),plot(x,y),axisimagefill,
boxoff
title('ImageandFill')
subplot(2,3,6),plot(x,y),axistight,
boxoff,
title('Tight')
各种轴控制指令的不同影响
实验四MATLAB的程序设计
一、实验目的:
1、熟悉MATLAB程序编辑与设计环境2、掌握各种编程语句语法规则及程序设计方法3、函数文件的编写和设计4、了解和熟悉跨空间变量传递和赋值
二、实验基本知识:
1、程序流程控制语句
for循环结构
语法:
fori=初值:
增量:
终值
语句1……
语句n
end
说明:
1.i=初值:
终值,则增量为1。
2.初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。
while循环结构
语法:
while逻辑表达式
循环体语句
end
说明:
1、whiIe结构依据逻辑表达式的值判断是否执行循环体语句。
若表达式的值为真,执行循环体语句一次、在反复执行时,每次都要进行判断。
若表达式的值为假,则程序执行end之后的语句。
2、为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位置加break语句、以便程序能正常执行。
(执行循环体的次数不确定;每一次执行循环体后,一定会改变while后面所跟关系式的值。
)
3、while循环也可以嵌套、其结构如下:
while逻辑表达式1
循环体语句1
while逻辑表达式2
循环体语句2
end
循环体语句3
end
if-else-end分支结构
if表达式1
语句1
elseif表达式2(可选)
语句2
else(可选)
语句3
end
end
说明:
1:
if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。
2:
if表达式2与else为可选项,这两条语句可依据具体情况取舍。
3:
注意每一个if都对应一个end,即有几个if,记就应有几个end。
switch-case结构
语法:
switch表达式
case常量表达式1
语句组1
case常量表达式2
语句组2
……
otherwise
语句组n
end
说明:
1.switch后面的表达式可以是任何类型,如数字、字符串等。
2.当表达式的值与case后面常量表达式的值相等时,就执行这个case后面的语句组如果所有的常量表达式的值都与这个表达式的值不相等时,则执行otherwise后的执行语句。
程序流程控制指令:
break、return、pause
2、函数文件的结构和编写方法
函数只能在函数体内对变量进行操作,也就是只能访问函数本身工作空间中的变量。
M函数文件的结构
(1)函数定义行(function)
(2)H1行(函数帮助文本的第一行)
(3)函数帮助文本
(4)函数体
(5)注释函数文件编写后,保存时,其文件名必须与函数名相同。
注意:
函数名不要与MATLAB自身的函数命令相同。
三、实验内容:
练习A1、熟悉MATLAB程序编辑与设计环境
2、用for循环语句实现求1~100的和
3、用for循环语句实现编写一个求n阶乘的函数文件
4、找到一个n!
>10100的值(利用上题的n阶乘函数文件)(两种方法)
5、编写一个乘法表(9×9)
实验五基于MATLAB的控制系统分析
一、实验目的:
1、掌握控制系统数学模型的基本描述方法和相互转化2、了解控制系统的稳定性分析方法
二、实验基本知识:
1.系统数学模型的几种表示方法方案一函数转换表
函数描述方式
传递函数模型
零极点模型
状态空间模型
传递函数模型
Sys=tf(num,den)
Sys_zpk=zpk(sys)
Sys_ss=ss(sys)
零极点模型
sys_tf=tf(sys)
sys=zpk(z,p,k)
Sys_ss=ss(sys)
状态空间模型
sys_ss=tf(sys)
sys_ss=zpk(sys)
sys=ss(a,b,c,d)
方案二
[z,p,k]=tf2zp(num,den);
[num,den]=zp2tf(z,p,k)
[num,den]=ss2tf(A,B,C,D,iu)
%iu—表示输入的序号(对多输入系统)[z,p,k]=ss2zp(A,B,C,D,iu)
%[z,p,k]—表示对第iu个输入信号的传递函数的零极点。
[A,B,C,D]=tf2ss(num,den)[A,B,C,D]=zp2ss(z,p,k)
2、在MATLAB工具箱中,提供了子系统的连接处理函数:
1)series()函数:
系统串联实现
格式:
sys=series(sys1,sys2)
[A,B,C,D]=series(A1,B1,C1,D1,A2,B2,C2,D2)
2)parallel()函数:
系统并联实现。
格式:
sys=parallel(sys1,sys2)
3)feedback()函数:
系统反馈连接
格