MATLAB里sim函数

2025-05-19 21:39:49
推荐回答(3个)
回答1:

sim函数用来运行Simulink模型。需要注意的是,用户无法控制其仿真过程(例如暂停、继续),一旦运行就会直到达到结束条件为止——这一点和通过模型窗口界面运行仿真不同。

调用格式:
[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模块。

回答2:

你的理解没错。

 

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?

回答3:

请问你的问题解决了吗?我也遇到这个问题了,不知道怎么办