在这种情况下,我在我的基础工作区中有一个神经网络(NN)实例,我想在Simulink模拟中使用它。我在嵌入式Matlab函数中使用了NN,其输入参数应该由网络使用。
原则上我希望做这样的事情:
function XBDDprime = NN(F, XB, XBD, XBDD)
%#eml
global net;
XBDDprime = net([F XB XBD XBDD]');
目标是从基础工作区(类net
的一个实例)中获取network
对象。
这就解决了我使用evalin
从工作区读取变量的问题:
function XBDDprime = NN(F, XB, XBD, XBDD)
%#eml
eml.extrinsic('evalin');
net = evalin('base', 'net'); %Fetch net from workspace
XBDDprime = net([F XB XBD XBDD]'); %Error!
这不能编译,因为看起来像simulink认为net是一个数组而net(...)
是数组下标(实际错误消息:不支持订阅到mxArray)。
在我看来,Simulink需要对任何用于编译嵌入式matlab函数的对象进行完整定义,这是正确的吗?甚至有解决方案吗?我可以以某种方式使用Simulink.Signal
来包装NN并将其作为参数添加到功能块中吗?
我也尝试使用load
从文件加载序列化的net
对象。那也行不通。似乎是编译器认为s
是mxArray
的相同问题。
function XBDDprime = NN(F, XB, XBD, XBDD)
%#eml
eml.extrinsic('load')
s = load('net');
XBDDprime = s.net([F XB XBD XBDD]');
我终于屈服了,去了matlab功能块,它看起来像上面的任何一个例子。
答案 0 :(得分:1)
您可以将net
参数定义为NN
函数的输入,并使用From Workspace
块将其添加到模型中。我不确定这是否适用于Embedded MATLAB function
块,您可能需要切换到M Code
块。
答案 1 :(得分:-2)
为神经网络模拟生成Simulink块 句法 gensim(净,ST) 获得帮助 输入help network / gensim。