我已经开发了simulink模型。我将其编译为具有2级功能:“ sfun.mexw32”。 我想在Matlab编辑器的.m文件中调用此函数。
我很难实现它,所以我首先尝试通过matlab中已经存在的插图函数 timestwo 来了解如何实现它。
您可以通过输入open('sfuntmpl.m')
(这是功能模板)来获取更多信息。
[sys,x0,str,ts] =timestwo(0,0,1,3)
我收到此错误: “使用timestwo时出错 MEX level2 S函数“ timestwo”调用了太多左手参数”
我不明白为什么会出现此错误,我希望输入1
的结果应该是2
。
还要知道是否可以给出输入矢量和代表时间的输入来模拟信号并获得结果。
答案 0 :(得分:0)
如果您的s函数具有.mexw32
扩展名,则它是已编译的Level-2 C代码S函数。它不是不是 m代码S函数。
我认为您会发现,除了Simulink模型之外,没有其他方法可以调用Level-2 M代码S函数或Level 2 C代码S函数。二级m代码S函数有一个输入,它是Simulink执行引擎创建并传递给它的block
对象,而二级c代码S函数由一个数字组成。的每个函数都传递了simStruct
(c代码)结构,该结构也是由Simulink执行引擎创建的。
您必须创建一个包含S函数的模型,大概是与相应的inport
和outport
块一起,然后使用sim
来调用模型。
请注意,您提供的链接(即open('sfuntmpl.m')
)是指向 Level-1 m代码S函数的模板的。这些可以从MATLAB调用,因为它们只是常规的m代码函数。 如果 ,您具有1级的M代码S函数(似乎没有),那么您应该可以尝试使用它在问题中要做。
第2级M代码S函数的模板是:edit('msfuntmpl.m');
第2级C代码S函数的模板为:edit(fullfile(matlabroot,'simulink','src','sfuntmpl_basic.c'));