S-Function的stae space的使用
发布网友
发布时间:2022-06-07 05:34
我来回答
共1个回答
热心网友
时间:2023-10-16 08:17
S-Function是system-function的缩写。S-Function就是用MATLAB所提供的模型不能完全满足用户,而提供给用户自己编写程序来满足自己要求模型的接口。
MEX函数与M文件的区别
第一
MEX 函数能实现的回调函数比M-文件能实现的回调函数要多得多;
第二
MEX 函数直接访问内部数据结构SimStruct,SimStruct 是Simulink 用来保存关于S-function 信息的一个数据结构;
第三
MEX 函数也可使用MATLAB MEX 文件API 直接来访问MATLAB 的工作空间。
如果一个C MEX文件与一个M文件具有相同的名字,则C MEX文件被优先使用,即在S-Function块中使用的是C MEX文件。
例如要创建一个有1输入(2维),2输出(1维),3个参数,还有全局变量的S-Function。
过程如下:
打开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 。然后分析代码
b编译在matlab的command window里面输入“mex test.c”,即可将test.c编译为mex文件。
c.调用sfunction在simulink空间里面拉入sfunction,在s-function name里面填入test,参数里面填入要设定的参数,然后仿真即可。