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 ...
 
随机推荐
- C++类成员常量
			
由于#define 定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用const 修饰数据成员来实现.const 数据成员的确是存在的,但其含义却不是我们所期望的.const 数据成员只在某个 ...
 - PHP自学之路-----javascript基础入门
			
Javascript概述: Javascript是基于对象和事件的脚本语言.特点; 1.安全性(不允许直接访问本地硬盘),它可以做的就是信息的动态交互. 2.跨平台性. JavaScript与HTML ...
 - jQuery对DOM的操作
			
"jQuery中非常重要的部分,就是对DOM的操作!" "jQuery中非常重要的部分,就是对DOM的操作!" "jQuery中非常重要的部分,就是对 ...
 - nodejs hello world (调用文件执行没反应)
			
今天学习了node.js ,来看一下hello world 的写法. 1. 首先安装node.js的驱动文件.http://nodejs.org/ 2. a:安装好node之后,在CMD窗口输入nod ...
 - Linux 网络编程: gethostbyname( ), getservbyname( )
			
前言 最近在学习网络编程,用到几个应该比较常用的网络编程函数,所以写篇博客来记录一下,毕竟学得快忘得也快.国庆节在宿舍写着博客看着各个景点人山人海倒也快哉~ gethostbyname( ) 这个函数 ...
 - Django问题汇总
			
Q1.运行python manage.py runserver后,出现如下错误(CentOS6.5x86,Python2.7.12,Django1.10): django.core.exception ...
 - js正则表达式的使用
			
正则表达式的常用字符: 符号 描述 /../ 代表一个模式的开始和结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 \s 任何空白字符 \S 任何非空白字符 \d 匹配一个数字字符,等价于[1-9 ...
 - 转: sublime text 2 前端编码神器-快捷键与使用技巧介绍
			
代码编辑器或者文本编辑器,对于程序员来说,就像剑与战士一样,谁都想拥有一把可以随心驾驭且锋利无比的宝剑,而每一位程序员,同样会去追求最适合自己的强大.灵活的编辑器,相信你和我一样,都不会例外. 如果说 ...
 - perl学习(4) 子程序
			
子程序,类比c语言中的函数,在形式上个人认为最大的区别:没有形参 1.1.定义子程序 1.2.调用 #! /usr/bin/perl sub marine { $n += 1 ; print &quo ...
 - [置顶] High Performance Canvas Game for Android
			
Rule #0 为移动平台进行优化 为移动平台进行优化是十分重要的,因为移动平台的性能大概只有桌面平台的1/10左右(*1),它通常意味着: 更慢的CPU速度,这意味着不经过优化的JavaScript ...