matlab的M-文件 S-函数的标准模板
更新时间:2023-09-26 12:12:01 阅读量: 综合文库 文档下载
function [sys,x0,str,ts] = sfuntmpl(t,x,u,flag) % SFUNTMPL 是M-文件 S函数模板
% 通过剪裁,用户可以生成自己的S函数,不过一定要重新命名 % 利用S函数可以生成连续、离散混合系统等,实现任何模块的功能 %
% M-文件S函数的语法为:
% [SYS,X0,STR,TS] = SFUNC(T,X,U,FLAG,P1,...,Pn) %
% 参数含义: % t是当前时间
% x是S函数相应的状态向量 % u是模块的输入 % flag是所要执行的任务 %
% FLAG 结果 功能
% ----- ------ -------------------------------------------- % 0 [SIZES,X0,STR,TS] 模块初始化 % 1 DX 计算模块导数 % 2 DS 更新模块离散状态 % 3 Y 计算模块输出
% 4 TNEXT 计算下一个采样时间点 % 9 [] 结束仿真 % %
% 用户切勿改动输出参数的顺序、名称和数目
% 输入参数的数目不能小于1,这四个参数的名称和排列顺序不能改动
% 用户可以根据自己的要求添加额外的参数,位置依次为第5,6,7,8,9等。
% S函数的flag参数是一个标记变量,具有6个不同值,分别为0,1,2,3,4,9
% flag的6个值分别指向6个不同的子函数
% flag所指向的子函数也成为回调方法(Callback Methods)
switch flag,
%初始化,调用“模块初始化”子程序% case 0,
[sys,x0,str,ts]=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);
%其他的flag% otherwise
DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag)); end
% end sfuntmpl
%============================================================================= % “模块初始化”子函数 % 返回大小、初始条件和样本
function [sys,x0,str,ts]=mdlInitializeSizes % 调用simsizes函数,返回规范格式的sizes构架 % 这条指令不要修改 sizes = simsizes;
% 模块的连续状态个数,0是默认值 % 用户可以根据自己的要求进行修改 sizes.NumContStates = 0; % 模块的离散状态个数,0是默认值 % 用户可以根据自己的要求进行修改 sizes.NumDiscStates = 0; % 模块的输出个数,0是默认值
% 用户可以根据自己的要求进行修改 sizes.NumOutputs = 0; % 模块的输入个数,0是默认值
% 用户可以根据自己的要求进行修改 sizes.NumInputs = 0;
% 模块中包含的直通前向馈路个数,1是默认值 % 用户可以根据自己的要求进行修改 sizes.DirFeedthrough = 1;
% 模块中采样时间的个数,1是默认值,至少需要一个样本时间 % 用户可以根据自己的要求进行修改 sizes.NumSampleTimes = 1;
% 初始化后的构架sizes经simsizes函数处理后向sys赋值 % 这条指令不要修改 sys = simsizes(sizes);
% 给模块初始值变量赋值,[]是默认值 % 用户可以根据自己的要求进行修改 x0 = [];
% 系统保留变量
% 切勿改动,保持为空 str = [];
% “二元对”描述采样时间及偏移量。[0 0]是默认值 % [0 0]适用于连续系统
% [-1 0]则表示该模块采样时间继承其前的模块采样时间设置 ts = [0 0];
% end mdlInitializeSizes
%============================================================================= % 计算导数向量
function sys=mdlDerivatives(t,x,u)
% 此处填写计算导数向量的指令 % []是模块的默认值
% 用户必须把算得的离散状态的导数向量赋给sys sys = [];
% end mdlDerivatives
%============================================================================= % 计算离散状态向量
function sys=mdlUpdate(t,x,u)
% 此处填写计算离散状态向量的指令 % []是模块的默认值
% 用户必须把算得的离散状态向量赋给sys sys = []; % end mdlUpdate
%============================================================================= % 计算模块输出向量
function sys=mdlOutputs(t,x,u)
% 此处填写计算模块输出向量的指令 % []是模块的默认值
% 用户必须把算得的模块输出向量赋给sys sys = []; % end mdlOutputs
%============================================================================= % 计算下一采样时刻
function sys=mdlGetTimeOfNextVarHit(t,x,u) % 该子函数仅在“采样时间”情况下使用
% sampleTime = 1 是模块默认设置,表示在当前时间1秒后再调用本模块 % 用户可以根据自己的要求修改 sampleTime = 1;
% 将计算得到的下一采样时刻赋给sys % 切勿改动
sys = t + sampleTime; % end mdlGetTimeOfNextVarHit
%============================================================================= function sys=mdlTerminate(t,x,u) % 模板默认设置,一般情况不要改动 sys = [];
% end mdlTerminate
正在阅读:
《高三化学一轮复习离子反应》难点总结04-07
必做二0一九版高考生物二轮复习 专题突破练 题型专项必练五 信息给予类12-07
2022中考物理总复习第3部分练习题第六讲质量与密度04-10
高中古诗词阅读鉴赏步步高(全)答案解析11-19
道家思想与山水画的关系11-24
为人民服务,学习老三篇心得体会10-22
网络基础题库01-23
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 函数
- 模板
- 文件
- 标准
- matlab
- 2018年广东省中考英语试题+参考答案+听力音频mp3+听力材料(精校Word文本版) - 图文
- 酶本质探索详细过程
- 信天游的特点
- 《基础会计》-财产清查章节-习题及答案
- 2018年最新部编人教版二年级语文下册第三单元教案(含教学反思)
- 双闭环直流调速系统的课程设计(MATLAB仿真)
- 要用关于隔爆水棚的设计及要求
- 第3组机械综合实训课程设计任务书
- 五 三班的坏小子阅读试题
- 企业安全生产主体责任行动实施
- 核桃种植技术
- 2018年中考语文句子仿写题解析-精品文档
- 第三讲 人应天地(续)
- 小学英语新课标资料(3)
- 景观生态学理论对景观规划设计实践的启迪
- 外墙幕墙工程设计及施工招标文件发出版
- 《机械设计基础》试题库及答案整理
- 王家荣-《王牌店长》训练课程讲义
- 高温应急预案(2)
- 语不惊人死不休(149)生活的决定比投资的决定重要