我正在尝试将参数结构传递给 MATLAB 中的 S-Function。我有一堆参数,我想避免像这样传递它们:
% MATLAB S-Function 语法的一般形式是: % [SYS,X0,STR,TS,SIMSTATECOMPLIANCE] = SFUNC(T,X,U,FLAG,P1,...,Pn)
我更喜欢传递一个包含我所有参数的单一结构。我将数据加载到模型工作区中:
首先我尝试(回应菲尔):
函数 [sys,x0,str,ts,simStateCompliance]=system1(t,x,u,flag,DATA_HMMWV)
大小.NumInputs = 2;
还,
但我得到这个错误:
Phil,这就是为什么我尝试向 S-Function 添加另一个输入端口的原因,我认为它必须进入那里。
我也试过:sizes.NumInputs = 1;
另外,您确定 DATA_HMMWV 是一个参数吗?它看起来与此窗口中的 Param 略有不同:
新:::: 2016 年 1 月 25 日
Phil,问题不在于我的导数函数,问题在于我仍然没有将结构传递给函数。这是一张图片。请注意,数据在模型工作区中,我将它 (DATA_HMMWV) 传递给函数,但是当我在第 13 行(调试模式)停止模拟时,DATA_HMMWV 不在函数工作区中。
因此,没有足够的输入参数传递给函数。此外,该功能非常简单:
% 函数 sys = mdlDerivatives(t,x,u,DATA_HMMWV)
sys = DATA_HMMWV.g;
% 结束 mdlDerivatives
它只是试图从结构中获取一个参数。