为什么simulink在运行时显示错误为 s-function的返回输出必须是长度为1的实向量?
在MATLAB Simulink中,S-Function是用户自定义的函数,可以将其插入到模型中以实现各种功能。当Simulink运行模型并使用S-Function计算输出时,如果输出的数据类型或长度与预期不符,就会出现错误。
在你的情况下,Simulink出现了一个错误,指出S-Function返回输出的长度必须为1。这意味着你的S-Function应该返回一个实数而不是一个向量或矩阵。你可以通过检查S-Function代码,确保输出的数据类型和长度是正确的,以解决这个问题。
说明你的返回输出的格式存在问题。
S-Function可以在进入前设置外部参数,S-function parameters,可以调用形式:数据结构体,数组都行。
S-function name:调用的函数的名称,在路径下edit创建
Matlab有自带的一些s-function模板,在script下写edit sfun + Tab键打开模板,2018版本simulink里面edit不会出现模板,以前的版本有的可以。
模板不变,主要是初始化以及输出函数部分
如上部分代码,初始化主要初始化输入输出参数个数构成sys结构体,这里不用太在意,只要设置好离散连续变量个数,输入输出个数就可以(不要求深度开发S-function)。在case 3 是函数的输出环节,可以调用当前路径下面的功能函数,在上图中我也频繁在调用,还可以进行循环迭代,在上图同样用while和if来进行循环判断。S-function好处是可以很好的契合simulink,同时更加像是在写.m-file,不过是要定义好外部参数来调用。