matlab中S-函数的建立与应用
来源:互联网 发布:淘宝店被降权怎么办 编辑:程序博客网 时间:2024/06/04 21:26
1 何为S-Function
S-Function是System Function的缩写。当MATLAB提供的模型不能完全满足用户需要时,就可以通过S-函数提供给用户自己编写程序来满足自己要求模型的接口。可以使用MATLAB、C、C++、Ada和Fortran语言编写。
S-函数使用的是一种比较特殊的调用格式,可以和Simulink求解器进行交互式操作,这种交互式与Simulink求解器和内置固有模块交互式操作相同。S-函数功能非常全面,适用于连续、离散以及混合系统。
2 在模型中使用S-函数
为了在Simulink中使用S-函数,必须从Simulink中的User-Defined Functions模块库中向Simulink模型文件窗口中拖放S-Function模块。然后在S-Function模块的对话框中的S-Function name文本框中输入S-函数的文件名。
S-函数所起的作用:向Simulink模型中增加一个通用目的的模块;使用S-函数的模块来充当硬件的驱动;在仿真中嵌入已经存在的C代码;将系统表示成一系列的数学方程;在Simulink中使用动画。
3 S-函数工作原理
Simulink模型的处理过程:(1)初始化(传递参数给MATLAB进行求值;得到的数值作为实际的参数使用;展开模型的层次,每个子系统被它们所包含的块替代;检查好相邻模块间的连接;确定状态初值和采样时间);(2)运行阶段(计算输出;更新离散状态;计算连续状态,连续状态的计算过程;计算输出,过零可能被激活)。
S-函数方法主要完成:(1)初始化(初始化结构体SimStruct,它包含了S-函数的所有信息;设置输入输出端口数;设置采样时间;分配存储空间);(2)计算下一个采样时间点;(3)计算下一个时间步的输出;(4)更新状态;(5)数值积分(用于连续状态的求解和非采样过零点)。
4 M文件S-函数的编写
既可以是M文件,也可以是MEX文件。仿真过程说明:
仿真阶段
S-函数过程
Flag
初始化
mdlInitializeSizes
mdlInitializeConditions
mdlInitializeSampleTimes
flag=1
计算下一个采样时间
mdlGetTimeOfNextVarHit
flag=4
计算输出
mdlOutputs
flag=3
更新离散状态
mdlUpdate
flag=2
计算导数
mdlDerivatives
flag=1
计算任务结束
mdlTerminate
flag=9
5 M文件S-函数模板
S-函数模板文件sfuntmpl.m。
用户可以输入edit sfuntmpl对该模板函数进行编辑和修改,以达到要求实现的结果,其主要参数说明如下:
t——当前时刻,是一个采用绝对计量的时间值,就是从仿真开始模型运行时间的计量值。
x——模块的状态向量,包括连续状态向量和离散状态向量。
u——模块的输入向量。
flag——执行不同操作的标记变量。其取值如上表。
case不一定都是必要的,有的情况下,我们可以进行剪裁。
用户对S-函数进行裁剪,但是不能修改输入和输出参数的名称、顺序,不过可以增加输入参数的数量。
6 连续、离散和混合系统M文件S-函数
- Matlab中S函数建立与应用
- matlab中S-函数的建立与应用
- matlab中s函数
- Matlab中S-函数的编写
- MatLab的S函数
- MATLAB中norm()函数的应用
- MATLAB中M文件的建立;与命令空间…
- Matlab 模块库建立 S函数心得 小记
- 对matlab中gradient函数的理解与C++中的应用
- Matlab中与时间有关的函数
- [初学笔记]matlab中主函数和次函数的建立和调用(嵌套与不嵌套),全局变量global与子函数的使用
- matlab中s函数编写心得(转)
- matlab-simulink中s-function函数…
- matlab中s函数编写心得(转)
- [初学笔记] matlab中 函数m文件创立,匿名函数的建立和调用
- matlab 形态学函数的应用
- MATLAB嵌套函数的应用
- OpenCV中与matlab中相对应的函数
- struts2、jsp分页代码
- 黑马程序员----JAVA Socket编程
- vi查找替换命令详解
- Netty系列之Netty高性能之道
- 来自苹果的编程语言——Swift简介
- matlab中S-函数的建立与应用
- IPtables中SNAT、DNAT和MASQUERADE的含义
- Java中的equals()和hashCode()契约
- 网站整合Ucenter详细流程
- 第十五周上机实践项目——工资数据的输入(从文件中读取数据)
- 静态方法只能被继承不能被重写--详解
- swift 开篇
- HighCharts 详细使用及API文档说明
- 自定义ViewGroup[跟随手指移动的view]