MATLAB里sim函数

我自己写了个神经网络,想用sim函数,为什么老是提示输入参数必须为字符串?我写的神经网络net是一个struct结构的,而我看MATLAB包里的net是一个网格形状的,是不是跟这个有关系?

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模块。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-01-31

你的理解没错。

 

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的说明。

如果还解决不了,请把你写的代码发出来,看看怎样帮你改。
如果受字数限制,或者数据需要保密,可适当进行简化,能反映出问题即可。

追问

上面这个是我用的nn,定义的结构体,DeepLearnToolbox-matlab里面的东西,       

 result_ = sim(nn,P);      %这一块用的sim,是用来做人脸识别一点代码

  字数限制太严重了,不过还是先谢谢大神了,学生没事做着玩的,没啥保密不保密的          

追答

我从GitHub、MathWorks FileExchange和新浪下载了三个版本的Deep Learning Toolbox,内容大同小异,里面都有NN的演示程序,差别只在于具体的位置和文件名:有的放在工具箱的根目录,有的放在NN文件夹中,有的放在tests文件夹,名字为test_example_NN.m或者nnexamples.m。

你如果要使用Deep Learning Toolbox,请参照它提供的演示程序来做,那里面并没有sim函数。

如果没有特别的原因,个人建议你使用MATLAB自带的工具箱,肯定比免费的Deep Learning Toolbox成熟与强大的多(使用这个免费工具箱的原因可能有两点:1、老外版权意识比较强;2、这个工具箱结构简单,一共就那么几个函数,如果要研究神经网络的算法,相对比较容易)。

无论你使用那个工具箱,都不能脱离基本的规则:二者是各自成体系的,不能直接混用,正如你不可能直接把Windows的程序直接在Linux上运行一样。

追问

嗯,好吧,还是谢谢啦,给你追加分

本回答被提问者和网友采纳
第2个回答  2018-01-31
请问你的问题解决了吗?我也遇到这个问题了,不知道怎么办