MATLAB与系统仿真实验手册.docx
《MATLAB与系统仿真实验手册.docx》由会员分享,可在线阅读,更多相关《MATLAB与系统仿真实验手册.docx(19页珍藏版)》请在冰豆网上搜索。
MATLAB与系统仿真实验手册
MATLAB与控制系统仿真实验指导书
河北大学电子信息工程学院
20010年9月
目录
实验一MATLAB基本操作与基本运算1
实验二M文件及数值积分仿真方法设计3
实验三MATLAB的图形绘制4
实验四函数文件设计和控制系统模型的描述6
实验五控制系统的分析与设计7
实验六连续系统离散化仿真方法设计8
实验七SIMULINK仿真9
实验八SIMULINK应用进阶10
附录MATLAB常用函数12
实验一MATLAB基本操作与基本运算
一、实验目的及要求:
1.熟悉MATLAB6.5的开发环境;
2.掌握MATLAB6.5的一些常用命令;
3.掌握矩阵、变量、表达式的输入方法及各种基本运算。
二、实验内容:
1.熟悉MATLAB6的开发环境:
①MATLAB的各种窗口:
命令窗口、命令历史窗口、启动平台窗口、工作空间窗口、当前路径窗口。
图1MATLAB界面窗口
②路径的设置:
Ø建立自己的文件夹,加入到MATLAB路径中,并保存。
Ø设置当前路径,以方便文件管理。
③改变命令窗口数据的显示格式
>>formatshort
>>formatlong
然后键入特殊变量:
pi(圆周率),比较显示结果。
2.掌握MATLAB常用命令
>>who%列出工作空间中变量
>>whos%列出工作空间中变量,同时包括变量详细信息
>>savetest%将工作空间中变量存储到test.mat文件中
>>loadtest%从test.mat文件中读取变量到工作空间中
>>clear%清除工作空间中变量
>>help函数名%对所选函数的功能、调用格式及相关函数给出说明
>>lookfor%查找具有某种功能的函数但却不知道该函数的准确名称
如:
lookforLyapunov可列出与Lyapunov有关的所有函数。
3.在MATLAB的命令窗口计算:
1)
2)
4.设计M文件计算:
已知
求出:
1)a+ba-ba+b*5a-b+I(单位阵)
2)a*ba.*ba/b
3)a^2a.^2
注意:
点运算.的功能,比较结果。
5.设计M文件计算:
x=0:
0.1:
10
当sum>1000时停止运算,并显示求和结果及计算次数。
三、实验报告要求:
1)体会1、2的用法;
2)对3、4、5写出程序及上机的结果。
实验二M文件及数值积分仿真方法设计
一、实验目的及要求:
1.掌握MATLAB程序设计方法,会编写M文件;
2.掌握用数值积分方法对连续系统建立仿真模型的方法。
二、实验内容:
M文件设计:
仿真时间0~1秒,计算步长h=0.1,初始值y(0)=1,对连续系统
采用以下方法建立仿真模型:
1
前向Euler:
2
后向Euler:
3
梯形法:
4改进Euler:
5经典RK4:
6
Adams法:
7Milne法:
并与精确解
的结果进行比较。
三、实验报告要求:
写出程序及上机的结果(保存程序,以便下次实验使用)。
实验三MATLAB的图形绘制
一、实验目的及要求:
1.掌握MATLAB绘图的基本方法,熟悉各种绘图函数的使用;
2.掌握图形的修饰方法和标注方法;
3.了解MATLAB中图形窗口的操作。
二、实验内容:
1、x=[-2π,2π],y1=sinx、y2=cosx、y3=sin2x、y4=cos2x
①用MATLAB语言分四个区域分别绘制的曲线,并且对图形标题及横纵坐标轴进行标注(如下图所示)。
图2四分区绘制曲线
②另建一个窗口,不分区,用不同颜色、线型绘出四条曲线,并标注图例注解。
图2四分区绘制曲线
图3同一窗口绘制多条曲线
③(选做)在图形窗口可利用Figure窗口菜单提供的功能进行操作,并保存成**.fig文件。
2、在实验二的基础上分别用分区域绘制和同一窗口绘制多条曲线的方法绘制7种算法和精确解的结果。
图4仿真算法与精确解曲线分区域比较
图5仿真算法与精确解曲线同一窗口比较
三、实验报告要求:
写出1、①(对图形的修饰写出第一个子区域即可)和②的程序。
实验四函数文件设计
一、实验目的及要求:
1.掌握函数文件的设计方法;
2.掌握函数文件的调用方法。
二、实验内容:
1、阶乘函数的设计:
设计一个函数文件实现一个阶乘运算
,
并设计程序调用该函数。
为保证函数的通用性,当输入负数或小数时,显示出错提示:
disp('Inputparametermustbeapositiveinteger!
')
提示:
fix(x)对零方向取整数
ceil(x)对+
方向取整数
round(x)四舍五入取整数
2、非线性限幅函数的设计:
正整数
并要求:
对输入的一个数列
,以x为横坐标,y为纵坐标绘制红色实线,图形的x轴范围限定在[x最小值-1x最大值+1],y轴范围限定在[-1.5*a1.5*a],如下左图:
(右图为利用Figure窗口的功能进行添加,选做)
三、实验报告要求:
写出程序及上机的结果。
实验五控制系统的分析与设计
一、实验目的及要求:
1.掌握控制系统数学模型的基本描述方法。
2.掌握控制系统频域与时域分析基本方法。
3.掌握现代控制理论的基本设计方法。
二、实验内容:
1、已知两个传递函数分别为:
①在MATLAB中分别用传递函数、零极点、和状态空间法表示;
②在MATLAB中分别求出通过反馈、串联、并联后得到的系统模型;
2.已知两个单位负反馈系统中前向通道的传递函数分别为:
,
①分别绘制开环系统的bode图和nyquist曲线;
②分别绘制闭环系统的根轨迹;
③分别绘制闭环系统的阶跃响应曲线,分析静态误差;
④分别绘制闭环系统的单位斜坡输入响应曲线,分析静态误差。
3.已知某被控对象的状态空间表达式为:
①判断能控性;
②期望极点为p=(-1,-2,-3);
③设计状态反馈K进行极点配置;
④分别绘制校正前后系统的阶跃响应曲线。
三、实验报告要求:
写出程序及上机的结果,并对结果进行分析。
实验六连续系统离散化仿真方法设计
一、实验目的及要求:
1.掌握用替换法建立连续系统仿真模型的方法;
2.掌握用离散相似法建立连续系统仿真模型的方法。
二、实验内容:
1、替换法建立连续系统仿真模型:
①设连续系统传递函数为
,用简单替换法求其Z传递函数和差分方程(采样周期T=0.1s);
②若已知:
输入作用为单位阶跃函数U(t)=1(t),起始值y(0)=0、y(0.1)=0.004251,仿真时间t=[0,10],
在①的基础上设计程序求出响应结果Y(t),并绘制响应曲线;并与控制系统step()函数得出的响应结果比较。
2、离散相似法建立连续系统仿真模型:
①若系统传递函数为
,当采用零阶保持器
,采样周期T=0.1S时,用Z域离散相似法求出系统的脉冲传递函数G(z),并写出差分方程;
②若输入作用为斜坡函数U(t)=t,仿真时间t=[0,10],在①的基础上设计程序求出响应结果Y(t),并绘制响应曲线;并与控制系统lsim()函数得出的响应结果比较。
三、实验报告要求:
写出用简单替换法和离散相似法建立差分方程的过程,并写出程序。
实验七SIMULINK仿真
——单回路控制系统及PID控制器参数整定
一、实验目的及要求:
1.熟悉SIMULINK工作环境及特点;
2.熟悉控制线性系统仿真常用基本模块的用法;
3.掌握SIMULINK的建模与仿真方法。
二、实验内容:
用SIMULINK建立被控对象的传递函数为
,系统输入为单位阶跃,采用PID控制器进行闭环调节。
①练习模块、连线的操作,并将仿真时间定为300秒,其余用缺省值;
②试用稳定边界法(过程控制P5工程整定法之一)设置出合适的PID参数,得出满意的响应曲线。
③设计M文件在一个窗口中绘制出系统输入和输出的曲线,并加图解。
三、实验报告要求:
①阐述用SIMULINK进行控制系统仿真的一般过程;
②说明用工程整定法——稳定边界法整定PID参数的过程。
实验八SIMULINK应用进阶
——子系统封装及复杂系统仿真
一、实验目的及要求:
1.掌握SIMULINK子系统模块化和封装技术;
2.熟悉SIMULINK对复杂控制系统仿真时常用的方法。
二、实验内容:
1、用SIMULINK建立系统:
,
为输入,
为输出,
为常数。
对该系统进行封装,要求通过对话框能修改
的值。
图6系统封装后的效果图
2、在第一题的基础上,
①加入实验四建立的阶乘函数,实现ax^3+bx+c+n!
的运算;
②将模型中的a、b、c、n表示为字母形式的变量名,设计M文件在文件中为模型参数赋值,然后运行仿真模型;
③在②中的M文件中实现用命令行运行仿真模型,并用plot语句绘曲线。
图7SIMULINK仿真模型图
三、实验报告要求:
①SIMULINK仿真中进行封装的目的以及封装的步骤;
②说明实验内容2的实现步骤和编制的M文件程序。
附录MATLAB常用函数
1、常用矩阵函数
命令
说明
d=eig(A)
矩阵特征值
[v,d]=eig(A)
矩阵特征值和特征向量
det(A)
行列式计算
inv(A)
求逆
poly(A)
特征多项式
trace(A)
对角元素之和
orth(A)
正交化
2、常用特殊矩阵
命令
说明
A=[]
空矩阵
A=eye(n)
N维单位矩阵
A=ones(n,m)
全部元素都为1的矩阵
A=zeros(n,m)
全部元素都为0的矩阵
A=rand(n,m)
元素为0到1之间均匀分布的随机矩阵
A=randn(n,m)
元素为零均值单位方差正态分布的随机矩阵
3、图形绘制和修饰
(1)坐标轴调整
axis([xminxmaxyminymax])图形的x轴范围限定在[xminxmax]
y轴范围限定在[yminymax]
axis(‘控制字符串’)根据字符串控制图形
set(gca,‘xtick’,标示向量)按照向量设置X坐标的刻度标示
set(gca,’ytick’,标示向量)按照向量设置Y坐标的刻度标示
set(gca,‘xticklabel’,‘字符串|字符串…')按字符串设置X坐标的刻度标示
set(gca,'yticklabel’,‘字符串|字符串…')按字符串设置Y坐标的刻度标示
(2)文字标示
title(‘字符串’)图形标题
xlabel(‘字符串’)x轴标注
ylabel(‘字符串’)y轴标注
text(x,y,‘字符串’)在坐标处标注说明文字
gtext(‘字符串’)用鼠标在特定处标注说明文字
(3)网格控制
gridon在所画的图形中添加网格线
gridoff在所画的图形中去掉网格线
(4)图例注解
legend(‘字符串1’,‘字符串2’,…,参数)
为区分各条曲线以字符串进行注解说明,参数确定注解在图形中的位置。
(5)图形的保持
holdon保持当前图形及轴系的所有特性
holdoff解除命令
(6)图形窗口的分割可把一个绘图窗口分割成几个区域,分别绘图。
subplot(m,n,p)将当前绘图窗口分割成m行n列区域,指定第p个编号区域
为当前绘图区。
区域编号原则:
“先上后下,先左后右”。
4、线性系统分析设计
(1)模型描述
状态空间:
写为A、B、C、D四个矩阵的形式;也可用SYS=SS(A,B,C,D)
传递函数:
用分子、分母的多项式表示;可用SYS=TF(NUM,DEN)建立tf模型
零极点:
用增益k、分子零点向量z、分母极点向量p表示,
同样可用SYS=ZPK(Z,P,K)建立zpk模型
部分分式:
传递函数没有相同极点时,可与部分分式相互转换:
[r,p,k]=residue(num,den)传递函数变换为部分分式形式
[num,den]=residue(r,p,k)部分分式变换为传递函数形式
闭环系统
feedback反馈连接SYS=feedback(SYS1,SYS2,sign)
[A,B,C,D]=feedback(A1,B1,C1,D1,A2,B2,C2,D2,sign)
[num,den]=feedback(num1,den1,num2,den2,sign)
sign=+(-)1反馈极性,缺省-1为负反馈
类似地,有parallel系统并联series系统串联
(2)模型转换ss—状态空间、tf—传递函数、zp—零极点
Ø[num,den]=ss2tf(a,b,c,d,iu)状态空间到传递函数
Ø[z,p,k]=ss2zp(a,b,c,d,iu)状态空间到零极点
Ø[a,b,c,d]=tf2ss(num,den)传递函数到状态空间
Ø[z,p,k]=tf2zp(num,den)传递函数到零极点
Ø[a,b,c,d]=zp2ss(z,p,k)零极点到状态空间
Ø[num,den]=zp2tf(z,p,k)零极点到传递函数
Ø[r,p,k]=residue(num,den)传递函数到部分分式
Ø[num,den]=(r,p,k)部分分式到传递函数
(3)系统分析(以下模型描述也可以用状态空间表达式的A、B、C、D)
Østep(num,den)直接画出单位阶跃响应曲线,时间是自动给定
[y,x]=step(num,den,T)求系统在T时间向量下的单位阶跃响应输出,y是列
向量,并返回状态x的变化。
ØImpulse,lism用法类似step
Øbode(num,den,w)直接绘出bode图。
Ø[m,p]=bode(num,den,w)求出幅值和相角,可再用半对数坐标画图
ØNyquist(num,den,{wmin,wmax})
直接绘Nyquist曲线,{wmin,wmax}频率范围
Ø[real,imag,ww]=Nyquist(num,den,{wmin,wmax})
得到实部、虚部,可再绘图。
Ørlocus(num,den)直接绘出根轨迹
Ø[r,k]=rlocus(num,den)返回增益和对应的复极点
Ø[r]=rlocus(num,den,k)返回给定增益对应的复极点
(4)状态反馈设计
ØM=ctrb(A,B)系统的能控矩阵M=[BABA2B…An-1B]
ØN=obsv(A,C)求取系统的能观矩阵N=[CCACA2…CAn-1]
Øk=acker(A,B,p)(单输入)对于期望极点p,求出系统的状态反馈增益阵k