matlab中的sfunction的用法(C语言)

matlab中的sfunction的用法(C语言)

ID:44703113

大小:105.15 KB

页数:7页

时间:2019-10-25

matlab中的sfunction的用法(C语言)_第1页
matlab中的sfunction的用法(C语言)_第2页
matlab中的sfunction的用法(C语言)_第3页
matlab中的sfunction的用法(C语言)_第4页
matlab中的sfunction的用法(C语言)_第5页
matlab中的sfunction的用法(C语言)_第6页
matlab中的sfunction的用法(C语言)_第7页
资源描述:

《matlab中的sfunction的用法(C语言)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、matlab中的sfunction的用法(C语言)已有1148次阅读2010-7-911:38

2、个人分类:学习笔记

3、系统分类:科研笔记

4、关键词:matlab,sfunction,C创建一个有1输入(2维),2输出(1维),3个参数,还有全局变量的s-function。1.新建sfunction的C语言文件打开simulink,点击User-DefinedFunctions里面的S-FunctionExamples。这个里面有多个语言版本的模板,有C,C++,Ada,Fortran和M语言的版本,其实都大同小异,只要了解几个函数就很容易使用了。选择C语

5、言的版本:从S-function模块中选择C-fileS-functions里面的BasicC-MEXtemplate。打开后,另存为自己的模块名字,如test.c。下面我们来分析代码:#defineS_FUNCTION_NAMEtest//这里把文件名sfuntmpl_basic修改为test#defineS_FUNCTION_LEVEL2#include"simstruc.h"//程序里面要用到的头文件在这里引用,如“math.h”等。floatglobal_var;//定义全局变量staticvoidmdlInitializeSizes(Sim

6、Struct*S){//这个函数用来设置输入、输出和参数的。ssSetNumSFcnParams(S,3);/*设置参数个数,这里为3*/if(ssGetNumSFcnParams(S)!=ssGetSFcnParamsCount(S)){return;}ssSetNumContStates(S,0);//设置连续状态的个数,缺省为0;ssSetNumDiscStates(S,0);//设置离散状态的个数,缺省为0;if(!ssSetNumInputPorts(S,1))return;//设置输入变量的个数,这里为1ssSetInputPortWid

7、th(S,0,2);//设置输入变量0的维数为2ssSetInputPortRequiredContiguous(S,0,true);//设置input0的访问方式,true就是临近访问,这样指针的增量后就可以直接访问下个input端口了。ssSetInputPortDirectFeedThrough(S,0,1);//设置输入端口的信号是否mdlOutputs函数中使用,这儿设置为true。if(!ssSetNumOutputPorts(S,2))return;//设置输出变量的个数ssSetOutputPortWidth(S,0,1);//设置输

8、出变量0的维数为1维ssSetOutputPortWidth(S,1,1);//设置输出变量1的维数为1维ssSetNumSampleTimes(S,1);//设置采样时间,此处为1s。ssSetNumRWork(S,0);//不管ssSetNumIWork(S,0);ssSetNumPWork(S,0);ssSetNumModes(S,0);ssSetNumNonsampledZCs(S,0);ssSetOptions(S,0);//下面可以写全局变量的初始化程序global_var=1;}staticvoidmdlInitializeSample

9、Times(SimStruct*S)//暂时不管{ssSetSampleTime(S,0,CONTINUOUS_SAMPLE_TIME);ssSetOffsetTime(S,0,0.0);}#defineMDL_INITIALIZE_CONDITIONS/*Changeto#undeftoremovefunction*/#ifdefined(MDL_INITIALIZE_CONDITIONS)staticvoidmdlInitializeConditions(SimStruct*S)//暂时不管{}#endif/*MDL_INITIALIZE_CON

10、DITIONS*/#defineMDL_START/*Changeto#undeftoremovefunction*/#ifdefined(MDL_START)staticvoidmdlStart(SimStruct*S)//暂时不管{}#endif/*MDL_START*/staticvoidmdlOutputs(SimStruct*S,int_Ttid)//这里填入相关的运算、算法等{real_T*para1=mxGetPr(ssGetSFcnParam(S,0));real_T*para2=mxGetPr(ssGetSFcnParam(S,1)

11、);real_T*para3=mxGetPr(ssGetSFcnParam(S,2));constreal_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。