- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MATLABS函数编写示范
MATLAB S函数编写示范(MATLAB2010a)??
2010-05-05 21:22:47|??分类: MATLAB之控制系统 |??标签:matlab??s-function??编写??教程??s??builder?? |字号大中小?订阅
1.M语言S函数
????? 在命令行输入命令“edit sfuntmpl”即可打开M语言s函数模板。M语言S函数是以flag为标志进行运算的。flag==0时,初始化参数;flag==1时,计算微分;flag==2时,状态更新;flag==3时,计算输出;flag==4时适用于变步长结算;其他参数不常用。
??????(1)flag==0时,调用mdlInitializeSizes函数,sizes结构及解释如下:
?????????????????????? sizes.NumContStates? = 0;???//连续变量个数?????????????????????? sizes.NumDiscStates? = 0;?? //离散变量个数?????????????????????? sizes.NumOutputs???? = 0;????//输出个数?????????????????????? sizes.NumInputs????? = 0;??? //输入个数?????????????????????? sizes.DirFeedthrough = 1;? //是否直通,当在输出里包含了输入时,为直通?????????????????????? sizes.NumSampleTimes = 1;? //采样时间
?????????????????????? 对状态变量进行初始化,如果初始条件是0初始条件,则
?????????????????????? x0=[0 0]
?????? (2)flag==1时,调用mdlDerivatives(t,x,u)函数计算微分,如有一系统为状态方程为x=2x+u,y=5x+u时,编写如下:sys=2*x+u;
?????? (3)flag==3时,计算输出,如上例系统,则编写如下:sys=5*x+u;
???????? ok,下面只需要将编写好的s函数名称写入s-function模块。
???????? 例子:对如下系统(零初始条件)
????????????????x1=-3x1-x2+u;
??????????????? x2=2x1;
??????????????? y=x2;编写s函数如下:
?function [sys,x0,str,ts,simStateCompliance] = sfun_m_hyj(t,x,u,flag)
switch flag,? case 0,??? [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;? case 1,??? sys=mdlDerivatives(t,x,u);? case 2,??? sys=mdlUpdate(t,x,u);? case 3,??? sys=mdlOutputs(t,x,u);? case 4,??? sys=mdlGetTimeOfNextVarHit(t,x,u);? case 9,??? sys=mdlTerminate(t,x,u);? otherwise??? DAStudio.error(Simulink:blocks:unhandledFlag, num2str(flag));endfunction [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizessizes = simsizes;
sizes.NumContStates? = 2;sizes.NumDiscStates? = 0;sizes.NumOutputs???? = 1;sizes.NumInputs????? = 1;sizes.DirFeedthrough = 1;sizes.NumSampleTimes = 1;?? % at least one sample time is neededsys = simsizes(sizes);x0? = [0 0];str = [];ts? = [0 0];simStateCompliance = UnknownSimState;function sys=mdlDerivatives(t,x,u)sys = [-3*x(1)-x(2)+u;2*x(1)]; //注意此处传递的是x向量,包含了x1和x2,引用时使用x(1),x(2),下标从1开始funct
您可能关注的文档
最近下载
- 2024年部编版四年级上册语文大单元作业设计第二单元作业单.pdf VIP
- 美国Megger IDAX300-350绝缘诊断分析仪使用说明书.pdf
- 六年级语文上册1-2单元测试(原卷+答案)2023-2024学年 部编版.docx
- 重油催化裂解增产丙烯研究进展.doc VIP
- 《食品添加剂应用技术》第二版 课件 任务4.2 增稠剂的使用.pptx
- 2023全国青少年文化遗产知识大赛题库附答案(401 -600 题).docx
- 双减背景下新课标单元整体作业分层设计案例 人教版初中英语八年级上册 Unit 1 Where did you go on.docx
- 《哈利波特》书籍分享ppt课件(图文).pptx
- 2.2 中国的气候第1课时 气候复杂多样教学设计 2023-2024学年湘教版地理八年级上册.docx
- 《中国特色社会主义道路的开辟与发展》参考课件.pptx VIP
文档评论(0)