matlab中s-function的使用

为什么simulink在运行时显示错误为 s-function的返回输出必须是长度为1的实向量?

在MATLAB Simulink中,S-Function是用户自定义的函数,可以将其插入到模型中以实现各种功能。当Simulink运行模型并使用S-Function计算输出时,如果输出的数据类型或长度与预期不符,就会出现错误。

在你的情况下,Simulink出现了一个错误,指出S-Function返回输出的长度必须为1。这意味着你的S-Function应该返回一个实数而不是一个向量或矩阵。你可以通过检查S-Function代码,确保输出的数据类型和长度是正确的,以解决这个问题。

说明你的返回输出的格式存在问题。

  • 你看下这篇博客吧, 应该有用👉 :Matlab S-function 使用总结
  • 你还可以看下matlab参考手册中的 matlab Run function after each function finishes running in the background afterEach
  • 除此之外, 这篇博客: Matlab捡知识——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,不过是要定义好外部参数来调用。