📄 mysfuntmpl.m
字号:
function [sys,x0,str,ts] = sfuntmpl(t,x,u,flag)
switch flag,
case 0, % Initialization 初始化部分
[sys,x0,str,ts]=mdlInitializeSizes;
case 1, % Derivatives 计算导数
sys=mdlDerivatives(t,x,u);
case 2, % Update 差分方程递推更新
sys=mdlUpdate(t,x,u);
case 3, % Outputs 计算输出
sys=mdlOutputs(t,x,u);
case 4, % 取得下一步仿真的时间
sys=mdlGetTimeOfNextVarHit(t,x,u);
case 9, % 终止
sys=mdlTerminate(t,x,u);
otherwise % Unexpected flags 出错处理
error(['Unhandled flag = ',num2str(flag)]);
end
% sfuntmpl 函数结束
%===================================================================
% mdlInitializeSizes模型初始化函数,返回:
% sys是系统参数
% x0是系统初始状态,若没有状态,取[ ]
% str是系统阶字串,通常设为 [ ]
% ts是取样时间矩阵,对连续取样时间,ts取 [0 0]
% 若使用内部取样时间,ts取[-1 0],-1表示继承输入信号的采样周期
%====================================================================
function [sys,x0,str,ts]=mdlInitializeSizes % 模型初始化函数
sizes = simsizes; % 取系统默认设置
sizes.NumContStates = 0; % 设置连续状态变量的个数
sizes.NumDiscStates = 0; % 设置离散状态变量的个数
sizes.NumOutputs = 0; % 设置系统输出变量的个数
sizes.NumInputs = 0; % 设置系统输入变量的个数
sizes.DirFeedthrough = 1; % 设置系统是否直通
sizes.NumSampleTimes = 1; % 采样周期的个数,必须大于等于1
sys = simsizes(sizes); % 设置系统参数
x0 = []; % 系统状态初始化
str = []; % 系统阶字串总为空矩阵
ts = [0 0]; % 初始化采样时间矩阵
%=======================================================================
% mdlDerivatives 模型计算导数——连续状态部分的计算,返回连续状态的导数
%=======================================================================
function sys=mdlDerivatives(t,x,u)
sys = []; % 根据状态方程(微分方程部分)修改此处
%=======================================================================
% mdlUpdate 状态更新——计算离散状态部分
%=======================================================================
function sys=mdlUpdate(t,x,u)
sys = []; % 根据状态方程(差分方程部分)修改此处
%=======================================================================
% mdlOutputs 计算输出信号,返回模块的输出
%=======================================================================
function sys=mdlOutputs(t,x,u)
sys = []; % 根据输出方程修改此处
%=======================================================================
% mdlGetTimeOfNextVarHit 计算下一步的仿真时刻,该函数仅当
% 在mdlInitializeSizes 函数中的采样时间向量定义了一个可变
% 离散采样时间ts为[-2 0]时才被使用。
%=======================================================================
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1; % 例如,下一步仿真时间是1秒之后
sys = t + sampleTime;
%=======================================================================
% mdlTerminate 终止仿真设定,完成仿真终止时的任务
%=======================================================================
function sys=mdlTerminate(t,x,u)
sys = [];
%程序结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -