计算机仿真实验指导.docx
- 文档编号:11800618
- 上传时间:2023-04-02
- 格式:DOCX
- 页数:16
- 大小:171.92KB
计算机仿真实验指导.docx
《计算机仿真实验指导.docx》由会员分享,可在线阅读,更多相关《计算机仿真实验指导.docx(16页珍藏版)》请在冰豆网上搜索。
计算机仿真实验指导
安徽大学2005级自动化专业计算机仿真实验
说明
1、所有选课同学必须参加实验课,按照排定顺序上机。
2、每次上机请登记在实验室记录本上,固定机位,一人一机。
3、本课程共2次上机实验,每次实验分5组进行。
4、第一次实验做本实验指导的实验一、实验二、实验三。
5、第二次实验做本实验指导的实验四、实验五。
6、在机房内务必保持安静,不得大声喧哗,不得从事与实验无关事项,如打游戏、看电影等。
2008、6
目录
实验一熟悉MATLAB环境
实验二熟悉SIMULINK环境
实验三连续系统一阶微分方程组的数字仿真
实验四基于MATLAB的控制系统的分析
实验五面向系统结构图的数字仿真
实验六环节离散法及非线性环节的数字仿真
实验一熟悉MATLAB环境
一、实验目的与要求
1.MATLAB的启动、工作空间、命令窗口、文件编辑调试器窗口等。
2.数组、矩阵的输入及基本的运算。
3.循环等条件语句的使用。
4.函数文件与底稿文件的编写。
5.画图功能。
6.如何使用帮助。
二、实验内容
1.矩阵的输入
在命令空间输入一个复数矩阵 A=[1+9i2+8i3+7j;4+6j5+5i6+4i;7+3i8+2j1i]和实数矩阵B=[10,2,12;34,2,4;98,34,6],查看工作空间的变量名及变量值是多少。
B(1:
2,:
)及inv(B)是多少。
2.底稿文件的编写和运行
点击MATLAB指令窗工具条上的NewFile图标
,就可打开如图所示的MATLAB文件编辑调试器MATLABEditor/Debugger。
其窗口名为untitled,用户即可在空白窗口中编写程序。
输入如下一段程序:
%db.m
t=-10:
0.1:
10;
wc=10;
ft=1/2*sin(t);
ft1=ft.*cos(wc*t);d=0:
length(ft)-1;
plot(d,ft1);
保存时文件名为db.m,然后点击Tool>>Run或使用快捷键或在命令窗口键入
db
3.注释语句使用
符号注解是由%起头,也就是说在%之后的任何文字都被视为程式的注解。
注解的功能是简要的说明程式的内容,过多的注解在程式中或许没有必要,但是写程式时往往用了太少的注解。
任何可能产生混淆的地方都应该省用注解,将适量的注解可在往后想了解程式时能节省一些不必要的时间与「有看没有懂」的痛苦。
4.循环语句的使用
考虑下面无穷级数求和问题:
(1)以采用下面的常规语句进行计算
>>tic,s=0;
fori=1:
100000,s=s+(1/2^i+1/3^i);end,s,toc
(2)利用向量而不用循环语句的方法
tic,i=1:
100000;s=sum(1./2.^i+1./3.^i),toc
5.M函数的编写与调用
M函数的编写
function[M,m,df]=fftseq(m,ts,df)
%[M,m,df]=Fftseq(m,ts,df)
%[M,m,df]=Fftseq(m,ts)
%FFTSEQ
fs=1/ts;
ifnargin==2
n1=0;
else
n1=fs/df;
end
n2=length(m);
n=2^(max(nextpow2(n1),nextpow2(n2)));
M=fft(m,n);
m=[m,zeros(1,n-n2)];
df=fs/n;
将以上程序以文件名fftseq.m保存,以备调用。
M文件调用(注意入口参数)
t0=0.15;
ts=0.001;
fc=50;
fs=1/ts;
t=[0:
ts:
t0];
m=[ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)),ones(1,t0/(3*ts)+1)];
ft1=m.*cos(2*pi*fc*t);
c=cos(2*pi*fc*t);
ft=ft1.*c;
df=0.25;
[FT,ft,df1]=fftseq(ft,ts,df);%调用函数
6.绘图的功能
(1)基本绘图
t=0:
0.001:
10;
y=sin(t);
plot(t,y);
Y=sin(10*t);
c=y.*Y;
plot(t,y,'r:
',t,Y,'b')
(2)subplot的用法
subplot(2,2,1),fplot('humps',[01])
subplot(2,2,2),fplot('abs(exp(-j*x*(0:
9))*ones(10,1))',[02*pi])
subplot(2,2,3),fplot('[tan(x),sin(x),cos(x)]',2*pi*[-11-11])
subplot(2,2,4),fplot('sin(1./x)',[0.010.1],1e-3)
7.CLC及CLEAR语句的作用
helpclc
helpclear
helpode23()
三、实验报告要求
1.整理各种实验的数据和曲线。
2.写出实验报告。
3.比较MATLAB语言和以前的C语言有什么优越性。
实验二熟悉SIMULINK环境
一、实验目的与要求
1.熟悉SIMULINK的启动。
2.熟悉SIMULINK模块库窗口:
连续模块、离散模块、函数和平台模块、数学模块、非线性模块、信号和系统模块接收器模块。
3.熟悉SIMULINK简单模型的建立SIMULINK功能模块的处理
4.熟悉如何使用帮助。
二、实验内客
1.SIMULINK的启动。
在MATLAB命令窗口中输入simulink或单击工具栏图标即可启动SIMULINK。
2.模块的显示及参数设置
从SIMULINK模块库窗口选中正弦函数、微分和示波器模块拖至编辑窗口。
用鼠标左键联结模块。
如果要改变模块参数只要双击模块就行了!
如双击sin函数,将出现下图:
SIMULINK仿真的运行,点击工具栏中三角形图表就可以运行仿真。
运行时间参数可在SIMULATION菜单中设置。
查看波形只要双击示波器图标即可。
3.非线性闭环系统的仿真
建立如下图模型,运行仿真。
4、面向对象的PID控制器建模
被控对象的开环传递函数为:
。
建立模型后运行仿真,尝试整定PID控制器的参数。
三、预习要求
1.预习SIMULINK模块库窗口的知识。
2.了解如何从模块库选择模块,如何连接模块。
3.仿真参数如何设置。
四、实验报告要求
1.整理各种实验条件下的数据和曲线。
1.总结SIMULINK建模的优越性,并写出实验报告。
实验三连续系统一阶微分方程组的数字仿真
一、实验目的与要求
1.掌握以一阶微分方程组形式描述的连续系统的数字仿真方法和步骤。
2.掌握欧拉法的MATLAB程序的编写。
3.掌握四阶龙格-库塔法的MATLAB程序的编写。
4.了解不同的数值积分算法与仿真计算的精度、速度的关系。
5.掌握MATLAB中数值积分库函数的使用。
二、实验内容
已知一系统的数学模型为:
,
,
0.01
0.005。
1.用MATLAB的函数表述该系统的数学模型
functionxdot=vdpol(t,x)
xdot
(1)=-0.001*x
(1)*x
(2);
xdot
(2)=0.001*x
(1)*x
(2)-0.072*x
(2);
xdot(3)=0.072*x(3);
xdot=[xdot
(1);xdot
(2);xdot(3)];
2.欧拉法(下面的程序是一个方程的程序,要修改)
functiony=fun(t0,tf,x0,h)
n=round((tf-t0)/h);
y=x0;
t=t0;
fori=1:
n
k(i)=vdpol(t,x0);
x0=x0+h*k(i);
y=[y,x0];
t=[t,t0+h*i]
end
plot(t,y)
在命令窗口输入以下命令
clear
h=0.1;
t0=0;
tf=1;
x0=1;
y=fun(t0,tf,x0,h)
3.四阶龙格-库塔法
functiony=my4(t0,tf,x0,h)
n=round((tf-t0)/h);
y=x0;
t=t0;
fori=1:
n
k1=vdpol(t,x0);
k2=vdpol(t+h/2,x0+h*k1/2);
k3=vdpol(t+h/2,x0+h*k2/2);
k4=vdpol(t+h,x0+h*k3);
x0=x0+h/6*[k1+2*k2+2*k3+k4];
y=[y,x0];%y=[y;x0];
t=[t,t0+h*i];%t=[t;t0+h*i];
end
plot(t,y)
命令窗口输入以下命
clear
h=0.1;
t0=0;
tf=1;
x0=1;
y=my4(t0,tf,x0,h)
4.MATLAB中数值积分库函数
使用ODE45()四阶、五阶龙格-库塔法[t,y]=ode45(@vdpo1,[020],[20]);
t0=0;
tf=20;
x0=[6201070];
[t,y]=ode45(‘vdpol’,t0,tf,x0);
plot(t,y)
三、预习要求
1复习一阶微分方程组仿真程序的原理和程序的各变量的含义,使用条件及方法。
2编制各实验内容的程序,已备实验时输入、调试。
四、实验报告要求
1.整理各种实验条件下的数据和曲线。
2.分析不同数值积分方法步长选择的影响,写出实验报告。
实验四基于MATLAB的控制系统的分析
一、实验目的与要求
1.掌握控制系统时域数字仿真方法、步骤及用MATLAB进行时域分析库函数及使用方法。
2.掌握控制系统频域数字仿真方法、步骤及用MATLAB进行频域分析库函数及使用方法。
3.掌握连续系统离散化的快速算法的原理及MATLAB库函数的使用。
二、实验内容
已知开环系统的传递函数为
1.用MATLAB控制工具箱函数求阶跃响应,从阶跃响应曲线中确定上升时间
和过渡过程时间
。
STEP(SYS,TFINAL)simulatesthestepresponsefromt=0tothefinaltimet=TFINAL.Fordiscrete-timemodelswithunspecifiedsamplingtime,TFINALisinterpretedasthenumberofsamples.
STEP(SYS,T)usestheuser-suppliedtimevectorTforsimulation.Fordiscrete-timemodels,TshouldbeoftheformTi:
Ts:
TfwhereTsisthesampletime.Forcontinuous-timemodels,TshouldbeoftheformTi:
dt:
Tfwheredtwillbecomethesampletimeforthediscreteapproximationtothecontinuoussystem.Thestepinputisalwaysassumedtostartatt=0(regardlessofTi).
2.用MATLAB控制工具箱函数绘制其闭环系统的根轨迹,并分析其稳定性。
RLOCUS(SYS)computesandplotstherootlocusofthesingle-input,single-outputLTImodelSYS.Therootlocusplotisusedtoanalyzethenegativefeedbackloop
+-----+
---->O----->|SYS|----+---->
-|+-----+|
||
|+---+|
+-------|K|<----+
+---+
andshowsthetrajectoriesoftheclosed-looppoleswhenthefeedbackgainKvariesfrom0toInf.RLOCUSautomaticallygeneratesasetofpositivegainvaluesthatproduceasmoothplot.RLOCUS(SYS,K)usesauser-specifiedvectorKofgainvalues.RLOCUS(SYS1,SYS2,...)drawstherootlociofmultipleLTImodelsSYS1,SYS2,...onasingleplot.Youcanspecifyacolor,linestyle,andmarkerforeachmodel,asinrlocus(sys1,'r',sys2,'y:
',sys3,'gx').
3、求该系统的波特BODE图,从波特图中确定该系统的剪切频率
。
BODE(SYS1,SYS2,...,W)graphstheBoderesponseofmultipleLTImodelsSYS1,SYS2,...onasingleplot.ThefrequencyvectorWisoptional.Youcanspecifyacolor,linestyle,andmarkerforeachmodel,asinbode(sys1,'r',sys2,'y--',sys3,'gx').
[MAG,PHASE]=BODE(SYS,W)and[MAG,PHASE,W]=BODE(SYS)returntheresponsemagnitudesandphasesindegrees(alongwiththefrequencyvectorWifunspecified).Noplotisdrawnonthescreen.IfSYShasNYoutputsandNUinputs,MAGandPHASEarearraysofsize[NYNULENGTH(W)]whereMAG(:
:
k)andPHASE(:
:
k)determinetheresponseatthefrequencyW(k).TogetthemagnitudesindB,typeMAGDB=20*log10(MAG).
4、求该系统的Nyquist曲线及稳定裕度及相位裕度。
NYQUIST(SYS)drawstheNyquistplotoftheLTImodelSYS(createdwitheitherTF,ZPK,SS,orFRD).Thefrequencyrangeandnumberofpointsarechosenautomatically.SeeBODEfordetailsonthenotionoffrequencyindiscrete-time.
NYQUIST(SYS,{WMIN,WMAX})drawstheNyquistplotforfrequenciesbetweenWMINandWMAX(inradians/second).
5、系统模型的离散化
采用下列方法对该系统离散化:
利用1)对输入信号加一个零阶保持器离散化‘zoh’;2)对输入信号加一个一阶保持器离散化‘foh’;3)双线性变换的方法‘tustin’;4)改进的‘tustin’方法;5)SISO系统的零极点匹配法。
比较各种方法的结果。
注意采样时间应如何选取。
[Ad,Bd,Cd,Dd]=C2DM(A,B,C,D,Ts,'method')convertsthecontinuous-timestate-spacesystem(A,B,C,D)todiscretetimeusing'method':
'zoh'Converttodiscretetimeassumingazeroorderholdontheinputs.
'foh'Converttodiscretetimeassumingafirstorderholdontheinputs.
'tustin'Converttodiscretetimeusingthebilinear(Tustin)approximationtothederivative.
'prewarp'Converttodiscretetimeusingthebilinear(Tustin)approximationwithfrequencyprewarping.Specifythecriticalfrequencywithanadditionalargument,i.e.C2DM(A,B,C,D,Ts,'prewarp',Wc)
'matched'ConverttheSISOsystemtodiscretetimeusingthematchedpole-zeromethod.
[NUMd,DENd]=C2DM(NUM,DEN,Ts,'method')convertsthecontinuous-timepolynomialtransferfunctionG(s)=NUM(s)/DEN(s)todiscretetime,G(z)=NUMd(z)/DENd(z),using'method'.
三、预习要求
1.复习时域特性及根轨迹法仿真程序的原理。
2.复习频域特性及波特图、Nyquist曲线仿真程序的原理。
四、实验报告要求
1.整理各种实验条件下的数据和曲线。
2.分析离散化连续系统的采样时间如何选取,分析各种离散方法的不同,并写出实验报告
实验五面向系统结构图的数字仿真
一、实验目的:
1、熟悉典型闭环系统的数字仿真方法,掌握采用四阶龙格-库塔法的MATLAB仿真程序的编写。
2、熟悉复杂闭环系统的数字仿真方法,了解联结矩阵和非零元素矩阵的概念,掌握基于联结矩阵的采用四阶龙格-库塔法的MATLAB仿真程序的编写。
二、
实验内容:
1、开环系统为的单位负反馈系统,当参考输入为单位阶跃信号时,编写采用四阶龙格-库塔法的MATLAB仿真程序进行仿真实验。
用SIMULINK模型进行仿真实验,验证MATLAB仿真程序的正确性。
2、
复杂系统结构如图所示,各环节传递函数已知,给出联结矩阵和非零元素矩阵,并编写基于联结矩阵的采用四阶龙格-库塔法的MATLAB仿真程序进行仿真。
用SIMULINK模型进行仿真实验,验证MATLAB仿真程序的正确性。
三、预习要求
3.复习典型闭环系统的数字仿真方法,编写采用四阶龙格-库塔法的MATLAB仿真程序。
4.复习复杂闭环系统的数字仿真方法,编写基于联结矩阵的采用四阶龙格-库塔法的MATLAB仿真程序。
四、实验报告要求
1.整理各种实验条件下的数据和曲线。
2.分析基于联结矩阵的采用四阶龙格-库塔法的仿真方法的优点,并写出实验报告
附录:
一、典型闭环系统的数字仿真程序
1、输入数据
a=[a0,a1,….,an];%n+1维分母系数向量,按降序排列
b=[b0,b1,…bm];%m+1维分子系数向量
X0=[x10,x20,…,xn0];%状态向量初值
V=V0;%反馈系数
n=n0;%系统阶次
T0=t0;%起始时间
Tf=tf;%终止时间
h=h0;%计算步长
R=r;%阶跃输入幅值
2、形成开、闭环系数矩阵
b=b/a
(1);a=a/a
(1);A=a(2:
n+1);%首一化处理
A=[rot90(rot90(eye(n-1,n)));-fliplr(A)];%形成能控标准型A阵
B=[zeros(1,n-1),1]’;%输入矩阵B
m1=length(b);%分子系数向量维数
C=[fliplr(b),zeros(1,n-m1)];%形成输出矩阵C
Ab=A-B*C*V;%闭环系数矩阵
X=X0’;y=0;t=T0;%设初始值
3、运算求解
N=round((Tf-T0)/h);%取整,求输出点数
fori=1:
N
K1=Ab*X+B*R;
K2=Ab*(X+h*K1/2)+B*R;
K3=Ab*(X+h*K2/2)+B*R;
K4=Ab*(X+h*K3)+B*R;%求各次斜率
X=X+h*(K1+2*K2+2*K3+K4)/6;%求状态
y=[y,C*X];%求输出向量
t=[t,t(i)+h];%输出对应时刻向量
end
4、输出结果
[t’,y’],plot(t,y)
二、复杂联结的闭环系统数字仿真
P=[1,0.01,1,0;
0,0.085,1,0.17;
1,0.01,1,0;
0,0.051,1,0.15;
1,0.0067,70,0;
1,0.15,0.21,0;
0,1,130,0;
1,0.01,0.1,0;
1,0.01,0.0044,0];
WIJ=[1,0,1;2,1,1;2,9,-1;3,2,1;4,3,1;4,8,-1;5,4,1;6,5,1;6,7,-0.212;7,6,1;8,6,1;9,7,1];
n=9;Y0=1;
Yt0=[0,0,0,0,0,0,0,0,0];
h=0.001;
L1=10;
T0=0;
Tf=10;
nout=7;
A=diag(P(:
1));
B=diag(P(:
2));
C=diag(P(:
3));
D=diag(P(:
4));
m=length(WIJ(:
1));
W0=zeros(n,1);
W=zeros(n,n);
forK=1:
m
if(WIJ(K,2)==0)
W0(WIJ(K,1))=WIJ(K,3);
elseW(WIJ(K,1),WIJ(K,2))=WIJ(K,3);
end
end
Q=B-D*W;
Qn=inv(Q);
R=C*W-A;
V1=C*W0;
Ab=Qn*R;
b1=Qn*V1;
Y=Yt0';
y=Y(nout);
t=T0;
N=round((Tf-T0)/(h*L1));
fori=1:
N
forj=1:
L1
k1=Ab*Y+b1*Y0;
k2=Ab*(Y+h*k1/2)+b1*Y0;
k3=Ab*(Y+h*k
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机仿真 实验 指导