南昌大学《MATLAB与控制系统仿真》实验报告综述.docx
《南昌大学《MATLAB与控制系统仿真》实验报告综述.docx》由会员分享,可在线阅读,更多相关《南昌大学《MATLAB与控制系统仿真》实验报告综述.docx(45页珍藏版)》请在冰豆网上搜索。
南昌大学《MATLAB与控制系统仿真》实验报告综述
实验报告
实验课程:
MATLAB与控制系统仿真
姓名:
学号:
专业班级:
2016年6月
实验一MATLAB的环境与基本运算
(一)
实验二MATLAB的环境与基本运算
(二)
实验三MATLAB语言的程序设计
实验四MATLAB的图形绘制
实验五基于SIMULINK的系统仿真
实验六控制系统的频域与时域分析
实验七控制系统PID校正器设计法
实验八线性方程组求解及函数求极值
实验一MATLAB的环境与基本运算
(一)
一、实验目的
1.熟悉MATLAB开发环境
2.掌握矩阵、变量、表达式的各种基本运算
二、实验基本原理
1.熟悉MATLAB环境:
MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器、文件和搜索路径浏览器。
2.掌握MATLAB常用命令
表1MATLAB常用命令
clc
清除命令窗口中内容
clear
清除工作空间中变量
help
对所选函数的功能、调用格式及相关函数给出说明
lookfor
查找具有某种功能的函数但却不知道该函数的准确名称
3.MATLAB变量与运算符
3.1变量命名规则
3.2MATLAB的各种常用运算符
表2MATLAB算术运算符
操作符
功能说明
操作符
功能说明
+
加
\
矩阵左除
-
减
.\
数组左除
*
矩阵乘
/
矩阵右除
.*
数组乘
./
数组右除
^
矩阵乘方
'
矩阵转置
.^
数组乘方
.'
数组转置
表3MATLAB关系运算符
操作符
功能说明
==
等于
~=
不等于
>
大于
<
小于
>=
大于等于
<=
小于等于
表4MATLAB逻辑运算符
逻辑运算符
逻辑运算
说明
&
And
逻辑与
|
Or
逻辑或
~
Not
逻辑非
Xor
逻辑异或
表5MATLAB特殊运算
符号
功能说明示例
符号
功能说明示例
:
1:
1:
4;1:
2:
11
.
;
分隔行
..
,
分隔列
…
()
%
注释
[]
构成向量、矩阵
!
调用操作系统命令
{}
构成单元数组
=
用于赋值
4.MATLAB的一维、二维数组的寻访
表6子数组访问与赋值常用的相关指令格式
三、主要仪器设备及耗材
计算机
四、实验内容
1.新建一个文件夹(自己的名字命名,在机器的最后一个盘符)
2.启动MATLAB,将该文件夹添加到MATLAB路径管理器中。
3.学习使用help命令。
4.窗口命令
●close
●closeall
●clc
●holdon
●holdoff
了解其功能和作用,观察commandwindow、commandhistory和workspace等窗口的变化结果。
5.工作空间管理命令
●who
●whos
●clear
6.随机生成一个2×6的矩阵,写出实现矩阵左旋(以第1行第1列为中心逆时针)90°或右旋(顺时针)90°的命令。
左旋:
rot90(a);右旋:
rot90(flipud(fliplr(a)))(先左右翻转,上下翻转,在左旋90°)
7.求高阶方程的的根,求高阶多项式的值。
8.创建一个二维数组A(4×8)。
查询数组A第2行、第3列的元素;查询数组A第2行的所有元素;查询数组A第6列的所有元素;查询数组A按列拉长形成新的数组B;查询数组A按行拉长形成新的数组C。
查询数组A按列拉长形成新的数组B:
B=A(:
)
查询数组A按行拉长形成新的数组C:
B=A’;D=B(:
);C=D’
五、实验程序及结果
1、新建一个文件夹(自己的名字命名,在机器的最后一个盘符)
2、启动MATLAB,将该文件夹添加到MATLAB路径管理器中。
3、学习使用help命令。
4、窗口命令
●close
●closeall
●clc
●holdon
●holdoff
5、工作空间管理命令
●who
●whos
●clear
3、程序如下:
%随机生成一个2×6的矩阵
a=rand(2,6)
%左旋90度
a1=rot90(a)
%右旋90度
a2=rot90(flipud(fliplr(a)))
%创建一个二维数组A(4×8)。
查询数组A第2行、第3列的元素;查询数组A第2行的所有元素;
%查询数组A第6列的所有元素;查询数组A按列拉长形成新的数组B;查询数组A按行拉长形成新的数组C
A=[12345678;910111213141516;1718192021222324;2526272829303132];
A1=A(2,3)
A2=A(2,:
)
A3=A(:
6)
B=A(:
)
B1=A';
D=B1(:
);
C=D'
求高阶方程的的根,求高阶多项式的值。
六、实验总结
通过第一次做实验,熟悉了一些的基本功能。
掌握矩阵、变量、表达式的各种基本运算,让自己感觉到了MATLAB功能的强大,因此我们必须学习使用这个软件,让它更好的为我们服务。
实验二MATLAB的环境与基本运算
(二)
一、实验目的
1.熟悉MATLAB开发环境
2.掌握矩阵、变量、表达式的各种基本运算
二、实验基本原理
1.MATLAB的基本运算
表1两种运算指令形式和实质内涵的异同表
2.MATLAB的常用函数
三、实验内容
1.设有3个二维数组A(2×4),B(2×4),C(2×2),参照表1写出所有由2个数组参与的合法的数组运算和矩阵指令及结果。
2.学习使用表2列出的常用函数。
3.学习使用表3列出的数组操作函数。
4.生成下列矩阵,并取出方框内的数组元素
四、主要仪器设备及耗材
计算机
五、实验程序及结果
实验程序:
%1、设有3个二维数组A(2×4),B(2×4),C(2×2),参照表1写出所有由2个数组参与的合法的数组运算和矩阵指令及结果。
A=[1234;5678];
B=[9101112;13141516];
C=[1718;1920];
s=30;
n=5;
p=1.2;
A.'
A=s
s+B
s-B
B-s
s.*A
s./B
B./s
A.^n
A.^p
A+B
A-B
A.*B
A./B
B.\A
exp(A)
log(A)
sqrt(A)
A'
s*A
s*inv(C)
A^n
A^p
A*B
A/B
B\A
expm(A)
logm(A)
sqrtm(A)
diag(C)
eye(4)
magic(5)
ones(5)
ones(4,5)
rand(6)
rand(6,2)
randn(3)
randn(3,6)
zeros(5)
zeros(3,7)
size(C)
rot90(B)
det(C)
rank(C)
%4、生成一个指定的矩阵,并按要求取出其中的数组元素
方法一
D=[1:
5;10:
-1:
6;11:
15;16:
20;21:
25]
D(2,2:
3)
D(2:
4,4)
D(4:
5,1:
3)
方法二
>>A=[1,2,3,4,5;10,9,8,7,6;11,12,13,14,15;16,17,18,19,20]
A=
12345
109876
1112131415
1617181920
>>A(2,2:
3)
ans=
98
>>A(2:
4,4)
ans=
7
14
19
>>A(4:
5,1:
3)
ans=
161718
212223
六、实验总结
在第一次实验的基础上,自己这次实验要相对上一次比较顺利,一些基本功能也能更好的掌握,但是对matlab这个软件的强大功能还不能很好的应用,因此我要加强对该软件的学习,让它更好的处理各个学科的知识,总而言之,这次实验的收获还是比较大的。
实验三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)elseif表达式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自身的函数命令相同。
三、主要仪器设备及耗材
计算机
四、实验内容
练习A
1.熟悉MATLAB程序编辑与设计环境
2.用for循环语句实现求1~100的和
3.用for循环语句实现编写一个求阶乘n!
的函数文件
4.设y=[3,5,7,9,11,16,21,23,25,27],将y向量中属于能整除3的元素传递给向量z。
(使用函数rem求余数)。
7.已知数组A=[2,4,6,8,10],B=[4,9,6,7,4],求
其中n=5。
五、实验程序及结果
程序如下:
%用for循环语句实现求1~100的和
sum=0;
fori=1:
100
sum=sum+i;
end
sum
结果为:
sum=
5050
%用for循环语句实现编写一个求阶乘n!
的函数文件
functionf=factor(n)
f=1;
fori=1:
n
f=f*i;
End
运行结果为:
f=factor(10)
f=
3628800
%设y=[3,5,7,9,11,16,21,23,25,27],将y向量中属于能整除3的元素传递给向量z。
(使用函数rem求余数)
y=[3,5,7,9,11,16,21,23,25,27];
z=[];
fori=1:
10
a=rem(y(i),3);
ifa==0
z=[z,y(i)];
end
end
z
结果为:
z=
392127
%已知数组A=[2,4,6,8,10],B=[4,9,6,7,4],求
其中n=5。
A=[2,4,6,8,10];
B=[4,9,6,7,4];
n=5;
sum=0;
fori=1:
5
a(i)=A(i)*B(n-i+1);
sum=sum+a(i);
end
sum
结果为:
sum=
184
六、实验总结
在前两次实验的基础上,掌握了基本的操作,这次实验进一步加深了对软件功能的探索,让自己熟悉MATLAB程序编辑与设计环境,掌握编程语句语法规则及程序设计方法、函数文件的编写和设计,了解和熟悉跨空间变量传递和赋值。
让自己掌握了基本的编程方法,受益匪浅。
实验四MATLAB的图形绘制
一、实验目的
1.学习MATLAB图形绘制的基本方法;
2.熟悉和了解MATLAB图形绘制程序编辑的基本指令;
3.熟悉掌握利用MATLAB图形编辑窗口编辑和修改图形界面,并添加图形的各种标注;
4.掌握plot、subplot的指令格式和语法。
二、实验基本原理
1.基本的绘图命令plot(x,y,)
2.建立图形窗口命令figure
(1);figure
(2);…;figure(n)打开不同的图形窗口,以便绘制不同的图形。
3.gridon:
在所画出的图形坐标中加入栅格
gridoff:
除去图形坐标中的栅格。
4.holdon:
把当前图形保持在屏幕上不变,同时允许在这个坐标内绘制另外一个图形。
holdoff:
使新图覆盖旧的图形。
5.axis设定轴的范围
axis([xminxmaxyminymax])设定x轴与y轴的最大、最小坐标。
axis(‘equal’):
将x坐标轴和y坐标轴的单位刻度大小调整为一样。
6.文字标示
●text(x,y,’字符串’)
在图形的指定坐标位置(x,y)处,标示单引号括起来的字符串。
●gtext(‘字符串’)
利用鼠标在图形的任意位置标示字符串。
●title(‘字符串’)
在所画图形的最上端显示说明该图形标题的字符串。
●xlabel(‘字符串’),ylabel(‘字符串’)
设置x,y坐标轴的名称。
●输入特殊的文字需要用反斜杠(\)开头
7.subplot(m,n,k):
分割图形显示窗口,在同一个窗口中显示多个图形。
●m:
上下分割个数
●n:
左右分割个数
●k:
:
子图编号
8.semilogx:
绘制以x轴为对数坐标(以10为底),y轴为线性坐标的半对数坐标图形。
semilogy:
绘制以y轴为对数坐标(以10为底),x轴为线性坐标的半对数坐标图形。
三、主要仪器设备及耗材
计算机
四、实验内容
1.绘制下列曲线,要求尽可能多地使用二中所列命令。
①
②
③
y=sin(t)sin(9t)
2.绘制二阶系统阶跃响应,综合演示图形标识。
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')
五、实验程序及结果
1.绘制下列曲线,要求尽可能多地使用二中所列命令。
①
②
③
y=sin(t)sin(9t)
%绘制下列曲线
subplot(2,2,1);
x=-5:
0.1:
5;
y=x-x.^3/3;
plot(x,y);
title('图形1');
xlabel('x');
ylabel('y');
gridon
subplot(2,2,2);
x=-5:
0.1:
5;
y=1/2/pi*exp(x.^2/2);
plot(x,y);
title('图形2');
xlabel('x');
ylabel('y');
gridon
subplot(2,2,3);
t=linspace(0,2*pi,10000);
r=2;
x=r*sin(t);
y=r*cos(t);
plot(x,y);
title('图形3');
xlabel('x');
ylabel('y');
axis('equal')
gridon
subplot(2,2,4);
t=linspace(0,2*pi,10000);
y=sin(t).*sin(9*t);
plot(t,y);
title('图形4');
xlabel('t');
ylabel('y');
gridon
2.绘制二阶系统阶跃响应,综合演示图形标识。
六、实验总结
这次实验掌握了MATLAB图形绘制的基本方法,熟悉和了解MATLAB图形绘制程序编辑的基本指令,利用MATLAB图形编辑窗口编辑和修改图形界面,并添加图形的各种标注,掌握plot、subplot的指令格式和语法。
让自己对软件的拓展范围加大,自己的使用更加顺利,收获很大。
实验五基于SIMULINK的系统仿真
一、实验目的
1、熟悉SIMULINK工作环境及特点
2、掌握线性系统仿真常用基本模块的用法
3、掌握SIMULINK的建模与仿真方法
4、子系统的创建和封装设计
二、实验基本原理
1、了解SIMULINK模块库中各子模块基本功能
2、SIMULINK的建模与仿真方法
(1)打开模块库,找出相应的模块。
鼠标左键点击相应模块,拖拽到模型窗口中即可。
(2)创建子系统:
当模型大而复杂时,可创建子系统。
(3)设置仿真控制参数。
三、实验程序及结果
1、SIMULINK仿真实际应用
(1)双环调速的电流环系统的方框图模型为:
图中参数设为Ks=44;Ts=0.00167;Ta=0.017;R=1;Tm=0.075;Ce=0.1925;Kt=0.01178;T1=0.049;T2=0.088
(1)在Simulink集成环境下建立模型,在给定信号作用点处输入单位给定阶跃响应信号,0.3秒后在扰
动信号点输入单位阶跃响应信号。
并绘制相应的响应曲线
(2)计算仿真结果的超调量、上升时间、调节时间、稳态误差。
(3)设计PID调节器替代图中的比例积分调节器,调节Kp,Ti,Td,用使系统满足超调量15%,上升时间0.3s,调节时间0.4s的要求。
(4)要求对加入的PID控制器封装成一个模块使用。
PID调节器封装模块
应用PID调节器后
2、用Simulink对以下系统进行仿真
其中
为系统输入,y(t)为系统输出,仿真当输入为正弦信号时,输出的信号的波形,仿真
时间0<=0t<=100。
3、在滑艇的运行过程中,滑艇主要受到如下作用力的控制:
滑艇自身的牵引力F,滑艇受到的水
的阻力f。
其中水的阻力
,u为滑艇的运动速度。
由运动学的相关定理可知,整个滑艇
系统的动力学方程为:
其中,m为滑艇的质量。
假设滑艇的质量为1000kg,建立此系统的Simulink模型并进行分析。
由仿真曲线可知,滑艇在牵引力F(值为1000)的作用下,在经过80s左右的时间后,速度由0上升并稳定在33km/h。
四、实验总结
这个实验让我熟悉SIMULINK工作环境及特点,掌握线性系统仿真常用基本模块的用法,熟悉SIMULINK的建模与仿真方法以及子系统的创建和封装设计.这个实验也体现了MATLAB用途比较广泛,因此我们必须学会使用MATLAB,这样才能更有益于我们的学习。
实验六控制系统的频域与时域分析
一、实验目的
1、掌握控制系统数学模型的基本描述方法和相互转化
2、了解控制系统的稳定性分析方法
3、掌握控制系统频域与时域分析基本方法
二、实验基本原理
1、系统数学模型的几种表示方法
2、在MATLAB工具箱中,提供了子系统的连接处理函数:
1)series()函数:
系统串联实现。
2)parallel()函数:
系统并联实现。
3)feedback()函数:
系统反馈连接。
3、控制系统根轨迹绘制
1)rlocfind():
计算给定根的根轨迹增益
2)rlocus()函数:
功能为求系统根轨迹。
4、控制系统频域分析基本方法
1)Bode图:
bode()函数
2)Nyquist图:
nyquist()函数
3)稳定裕度计算:
margin()函数
5、线性系统时间响应分析
1)step()函数---求系统阶跃响应
2)impulse()函数:
求取系统的脉冲响应
3)lsim()函数:
求系统的任意输入下的仿真
三、实验程序及结果
1、表示下列传递函数模型,并转化成其他的数学模型
1.
(1)传递函数以及传递函数转化为零极点形式
传递函数转化为状空表达式
(2)传递函数以及传递函数转化为零极点形式
传递函数转化为状空表达式
(3)传递函数以及传递函数转化为零极点形式
传递函数转化为状空表达式