matlab 中 s-function 用法
创建一个有 1 输入(2 维),2 输出(1 维),3 个参数,还有全局变量的 s-
function。
1.新建 sfunction 的 C 语言文件
打开 simulink,点击 User-Defined Functions 里面的 S-Function
Examples。这个里面有多个语言版本的模板,有 C,C++,Ada,Fortran 和 M 语言
的版本,其实都大同小异,只要了解几个函数就很容易使用了。 选择 C 语言的版
本:从 S-function 模块中选择 C-file S-functions 里面的 Basic C-MEX
template。打开后,另存为自己的模块名字,如 test.c。
下面我们来分析代码:
#define S_FUNCTION_NAME test//这里把文件名 sfuntmpl_basic 修改为 test
#define S_FUNCTION_LEVEL 2
#include "simstruc.h"
//程序里面要用到的头文件在这里引用,如“math.h”等。
float global_var; //定义全局变量
static void mdlInitializeSizes(SimStruct *S)
{
//这个函数用来设置输入、输出和参数的。
ssSetNumSFcnParams(S, 3); /*设置参数个数,这里为 3 */
if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S)) {
return;
}
; ssSetNumContStates(S, 0);//设置连续状态的个数,缺省为 0