MATLAB里sim函数
调用格式:
[t,x,y] = sim(model,timespan,options,ut);
[t,x,y1, y2, ..., yn] = sim(model,timespan,options,ut);
输入参数:
model:模型的名字,用单引号括起来(注意不带扩展名.mdl);
timespan:指定仿真时间范围,可以有几种情况:
标量tFinal,指定仿真结束时间。这种情况下开始时间为0;
两个元素的向量[tStart tFinal],同时指定开始时间和结束时间;
向量[tStart OutputTimes tFinal],除起止时间外,还指定输出时间点(通常输出时间t会包含更多点,这里指定的点相当于附加的点)。
options:指定仿真选项,是一个结构体,该结构体通过simset创建,包括模型求解器、误差控制等都可以通过这个参数指定(不修改模型,但使用和模型对话框里设置的不同选择)。
ut:指定外部输入,对应于根模型的Inport模块。
除第一个输入参数外,其他参数都可以用空矩阵([])来表示模型的默认值。
输出参数:
t:仿真时间向量;
x:状态矩阵,每行对应一个时刻的状态,连续状态在前,离散状态在后;
y:输出矩阵,每行对应一个时刻;每列对应根模型的一个Outport 模块(如果Outport模块的输入是向量,则在y中会占用相应的列数)。
y1, y2, ..., yn:把上面的y分开,每个yi对应一个Outport模块。
你的理解没错。
MATLAB中,sim有多种重载形式,可以用which命令查看:
>> which sim -all
built-in (D:\MATLAB\R2008b\toolbox\simulink\simulink\sim)
D:\MATLAB\R2008b\toolbox\mpc\mpc\@mpc\sim.m % mpc method
D:\MATLAB\R2008b\toolbox\nnet\nnet\@network\sim.m % network method
D:\MATLAB\R2008b\toolbox\ident\ident\@idmodel\sim.m % idmodel method
D:\MATLAB\R2008b\toolbox\ident\nlident\@idnlhw\sim.m % idnlhw method
D:\MATLAB\R2008b\toolbox\ident\nlident\@idnlgrey\sim.m % idnlgrey method
D:\MATLAB\R2008b\toolbox\ident\nlident\@idnlarx\sim.m % idnlarx method
当调用sim的输入参数是某种对象时(例如,如果是一个network对象),则MATLAB会自动调用对应的方法(toolbox\nnet\nnet\@network\sim.m)。但如果输入参数不是对象(例如你说的struct),这时会调用built-in函数sim,而这个sim函数是用于仿真Simulnik模型的,其输入参数必需是字符串(也就是那个模型的名字)。
神经网络对象通常是用newp函数创建的,不知你的怎么会是一个struct?
我只是简单的写了一个神经网络的那样的结构,所以我这个只是struct的了,问题是该怎么给这个结构体变成神经网络对象呢?
你的struct是自己定义的吗?
要想用神经网络的相关函数(例如sim),当然就应该按照它的方式来,具体查一下newp的说明。
如果还解决不了,请把你写的代码发出来,看看怎样帮你改。
如果受字数限制,或者数据需要保密,可适当进行简化,能反映出问题即可。