Matlab中S函数建立与应用
% 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
Matlab中S函数建立与应用的更多相关文章
- matlab 中“newff” 函数的参数设置
matlab 中"newff" 函数的使用方法技巧|和各参数的意义 先来一个简单的源程序让大家练习一下: % Here input P and targets T define a ...
- matlab中patch函数的用法
http://blog.sina.com.cn/s/blog_707b64550100z1nz.html matlab中patch函数的用法——emily (2011-11-18 17:20:33) ...
- matlab中subplot函数的功能
转载自http://wenku.baidu.com/link?url=UkbSbQd3cxpT7sFrDw7_BO8zJDCUvPKrmsrbITk-7n7fP8g0Vhvq3QTC0DrwwrXfa ...
- 【原创】Matlab中plot函数全功能解析
[原创]Matlab中plot函数全功能解析 该帖由Matlab技术论(http://www.matlabsky.com)坛原创,更多精彩内容参见http://www.matlabsky.com 功能 ...
- matlab 中max函数用法
Matlab中max函数在矩阵中求函数大小的实例如下:(1)C = max(A)返回一个数组各不同维中的最大元素.如果A是一个向量,max(A)返回A中的最大元素.如果A是一个矩阵,max(A)将A的 ...
- Matlab中plot函数全功能解析
Matlab中plot函数全功能解析 功能 二维曲线绘图 语法 plot(Y)plot(X1,Y1,...)plot(X1,Y1,LineSpec,...)plot(...,'PropertyName ...
- matlab中cumsum函数
matlab中cumsum函数通常用于计算一个数组各行的累加值.在matlab的命令窗口中输入doc cumsum或者help cumsum即可获得该函数的帮助信息. 格式一:B = cumsum(A ...
- 『转载』Matlab中fmincon函数获取乘子
Matlab中fmincon函数获取乘子 一.输出结构 [x,fval,exitflag,output,lambda] = fmincon(......) 二.结构说明 lambda结构 说 ...
- matlab中norm函数的用法
格式:n=norm(A,p) 功能:norm函数可计算几种不同类型的矩阵范数,根据p的不同可得到不同的范数 以下是Matlab中help norm 的解释 NORM Matrix or vecto ...
随机推荐
- LKD3
第三章 进程1. Unix操作系统的抽象:进程和文件2. 进程包括两个因素:可运行代码,和资源(打开的文件,挂起的信号,内核内部数据,处理器状态,地址空间)3. 线程是进程中活动的对象.4. 线程有独 ...
- asp.neti 加密三种方式
public string Get_MD5_Method1(string strSource) { System.Security.Cryptography.MD5 md5 = new System. ...
- NSArray的4种遍历方式
前言:NSArray对应的是java的List,不同的是其元素不能更改,不过其派生类NSMutableArray可以更改,遍历的方式跟java的List基本一样 一. for循环 Student * ...
- OpenCV配置使用版
在VS2010环境中应用Opencv,网上找到了很多配置方法,但大多都是老版本的,很多新手面对最新版本的Opencv无从下手,就给新手童鞋写了这么一篇超级详细的配置攻略,贴上来共享.要强调一点的就是, ...
- myEclipse快捷键及其常用设置
快捷键: 查找替换:ctrl + f 复制行: ctrl + alt + down 删除行: ctrl + d 插入行: shift + enter, ctrl + shift ...
- S2S:分享出的营销机遇
(速途网专栏 作者:高学争)经常在网上购物的你,有没有遇到过这样的问题:你知道自己想买什么,但是在淘宝上一搜,出来了数以万计的同类型,他们有着同样的价位(甚至可能是同样的图片),但是由不同的商家提供, ...
- Week16(12月23日):复习
Part I:提问 =========================== 1.声明强类型视图时,使用关键字( ) A.ViewBag B.model C.Type D.Tit ...
- C语言宏的特殊用法和几个坑(转)
总结一下C语言中宏的一些特殊用法和几个容易踩的坑.由于本文主要参考GCC文档,某些细节(如宏参数中的空格是否处理之类)在别的编译器可能有细微差别,请参考相应文档. 宏基础 宏仅仅是在C预处理阶段的一种 ...
- Apache和Nginx下禁止访问特定的目录或文件
大家是否测试Apache做了目录禁止浏览后,目录下面的txt文件还是可以显示里面的内容的.例如:http://www.domain.com/test/此访问会报403错误,但是如果test下有很多tx ...
- Qt编程中,Ui文件如何被利用
这两天跟着班级辅导,总有学生感到很疑惑,用ui designer设计出来的ui文件是如何使用的,下面我从一个例子来说明下,希望能对有这样疑惑的同学有帮助. 事实上,现在有了继承设计工具qtcreato ...