关键词不能为空

当前您在: 主页 > 英语 >

S函数学习笔记

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-07 10:08
tags:

-

2021年2月7日发(作者:中英互译)


S


函数用于自定义实现特定的算法,然后嵌入到


simulink


模块“


S-Function


”中用于仿真。


一、主函数



1


、函数头:



function



[sys,x0, str,ts]=functionname(t,x,u,flag,


p1,p2,p 3...


)



sys,x0,str,ts


为系统默认输出变量;





t,x,u,flag

< p>
为系统默认输入参数;





p1,p2,p3...


为用户可选输入变量;



(如果定义函数时列表 中有可选输入参数,在


S-Function


模块中要设置参数 的值)





s


函数文件名要与函数名一致。



2


、函数体



switch flag


case 0


[sys,x0,str,ts]=mdlInitializeSizes;


case 1


sys = mdlDerivatives(t,x,u);


case 2


sys = mdlUpdates(t,x,u);


case 3


sys = mdlOutputs(t,x,u);


case 4


sys = mdlGetTimeOfNextVarHit(t,x,u);


case 9


sys=mdlGetTimeOfNextVarHit(t,x,u);


3


、说明



对 于特定的算法可能只用到某些


flag


状态的操作,对于不需要 操作的


flag


状态,有两


种处理方式 ,一种是在主函数中处理,另一种是在定义子函数时处理。以不需要进行


flag



1



4

< p>


9


状态时的操作为例分别进行说明。

< p>




在主函数中处理



在主函数中编写为:



case {1,2,9}










sys = [];



这样处理就不需要再编写对应状态的子函数。





在子函数中处理



在主函数中编写为:



case 1


sys = mdlDerivatives(t,x,u);


case 4


sys = mdlGetTimeOfNextVarHit(t,x,u);


case 9


sys=mdlGetTimeOfNextVarHit(t,x,u);


在子函数中编写为:



function sys = mdlUpdates(t,x,u)


sys = [];


function sys = mdlGetTimeOfNextVarHit(t,x,u)


sys = [];


function sys=mdlTerminate(t,x,u)






sys = [];


二、子函数


< /p>


算法的设计可能会用到状态变量


x


,那么 根据


x


的性质可以将算法分为三大类:基于连续状


态变量的算法、


基于离散状态变量的算法和不基于状态变量的算法。


接下来分别介绍这三种


类型的算法设计。



1


、基于连续状态变量的算法



算法的整体设计思想是:


?


=f1(t,x, u)




y=f2(t,x,u)




初始化


(flag=0)


设置使用的连续状态变量的个数:


tStates =




设置不使用离散状态变量:


cStates = 0


设置输出变量的个数:


puts =




设置输入变量的个数:


uts =




设置输出变量与输入变量是否相关:


dthrough = 1



0


设置采样时间的个数:


pleTimes =




用系统变量


sys


记录并返回上述设置:


sys=simsize(si zes)


设置状态变量的初始值:


x0 = [







...]


设置保留变量

< p>
str


为空:


str = []


设置采样时间类型:


ts = [





...]


示例:



/************ ***************************************/


function [sys,x0,str,ts] = mdlInitializeSizes



sizes = simsizes;


tStates = 2;


cStates = 0;


puts = 2;


uts = 2;


dthrough = 1;



pleTimes = 1;


sys = simsizes(sizes);



x0 = zeros(2,1);


str = [];


ts = [0 0];


/*************** ************************************/




状态变量求导


(flag=1)


子函 数


mdlDerivatives


实现连续状态变量

< p>
x


导数的表达式:


f1(t,x,u)

< p>
,用系统变量


sys


记录并传递给


?


。在函数体中也可以编写其它操作,但是


sys


只返回给


?




示例:



/************ ***************************************/


function sys = mdlDerivatives(t,x,u,A,B,C,D)


-


-


-


-


-


-


-


-



本文更新与2021-02-07 10:08,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/607909.html

S函数学习笔记的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文