我自己写了个神经网络,想用sim函数,为什么老是提示输入参数必须为字符串?我写的神经网络net是一个struct结构的,而我看MATLAB包里的net是一个网格形状的,是不是跟这个有关系?
你的理解没错。
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上运行一样。
嗯,好吧,还是谢谢啦,给你追加分
本回答被提问者和网友采纳