这里只需要修改NBG=20,H=5,DXG=20。NB和DX初始值不重要,它们初始值没有被用到而是一直被赋值。所以只要修改孙世祥其他三个参数即可。绿则搏灯时间加上黄灯时间为通行时间。
首先:function [sys,x0,str,ts] = modelfree(t,x,u,flag,c,d)
switch flag,
case 0
[sys,x0,str,ts] = md1InitializeSizes
case 2
sys = md1Updates(x,u)
case 3
sys = md1Outputs(t,x,u, c,d)
case {1,4,9}
sys = []
otherwise
error([‘Unhandled flag=’,num2str(flag)])
end
这段为运行的主函数,从这个函数开始执行,此函数的主体是一个switch分支语稿渣句,就是由变量flag的值选择case的入口,即当flag==0,就执行[sys,x0,str,ts] = md1InitializeSizes而这句键老悄中的md1InitializeSizes调用了下面的这个函数:
function [sys,x0,str,ts] = md1InitializeSizes
sizes = simsizes
sizes.NumContstates = 0
sizes.NumDiscstates = 3
sizes.NumOutputs = 1
sizes.NumInputs = 1
sizes.DirFeedthtough = 1
sizes.NumSampleTimes = 1
sys = simsizes(sizes)
x0 = [0.2,0.2,0]
str = []
ts = [-1,0]
执行完后跳到终点,就结束。
当flag==2时,就执行sys = md1Updates(x,u)而这句中的md1Updates(x,u)调用了下面的这个函数:
function sys = md1Updates(x,u)
f=x(2)+u(3)*(u(2)-x(2)*u(3))/(0.1+u(3)*u(3))
sys = [u(1)fx(3)]
执行完后跳到终点,就结束。
当flag==3时,就执行sys = md1Outputs(t,x,u, c,d)而这句中的md1Outputs(t,x,u, c,d)调用了下面的这个函数:
function sys = md1Outputs(t,x,u,c,d)
sys = c*x(2)*x(1)/(d+x(2)*x(2))
{ 如果我没猜错的话,你上面写的
function sys = md1Updates(t,x,u,c,d)
sys = c*x(2)*x(1)/(d+x(2)*x(2))
应该为含陵:
function sys = md1Outputs(t,x,u,c,d)
sys = c*x(2)*x(1)/(d+x(2)*x(2))
}
执行完后跳到终点,就结束。
当flag为1、4、9时,就执行:sys = []
当flag为其他值就执行error([‘Unhandled flag=’,num2str(flag)])这句显示一个错误的信息,Unhandled flag= 后面是将flag数值型转化为字符串。
首先闷轿问一下是什么程序? 先想办法运行,看看它是干什么的。 然后再找程序入口,不要一开始就一个方法一个方法的看码孝, 先了解一下每个方法的功能是什么,因为方法都是功能的封装体。 最后在针对重点方法看实现。 其实思想就是了解程序功能。然后把握整体框架,最后在看具体实现。 再者就是没事多读点,读的多了自然就有自己的技巧了。 以上个迟罩稿人总结,仅供参考...希望采纳
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)