• 大小: 6KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Matlab
  • 标签: simulink  s函数  实例  

资源简介

在simulink中应用s函数设计一个连续系统的实例。程序做了详细的注释(拜托,简单的一眼看懂的那种没有注释)。 作为入门级的看看比较好。友情提醒:运行前,记得设初值。

资源截图

代码片段和文件信息

%对应的系统传函为G=1/(s+1)状态空间方程为:dx=-x+u;y=x
%注意:x_initial是状态变量x的初始值,需要在simulink对系统进行仿真前由用户在工作空间手工赋值

function [sysx0strts] = sfun_1(txuflagx_initial)
switch flag
  case 0
    [sysx0strts]=mdlInitializeSizes(x_initial);%初始化子函数
   case 1
    sys=mdlDerivatives(txu); %微分计算子函数
  case 2
    sys=mdlUpdate(txu);%状态更新子函数
  case 3
    sys=mdlOutputs(txu);%结果输出子函数
  case 4
    sys=mdlGetTimeOfNextVarHit(txu);%计算下一个采样点的绝对时间的子函数
  case 9
    sys=mdlTerminate(txu);%仿真结束子函数
  otherwise
    error([‘Unhandled flag = ‘num2str(flag)]);%出错标记
end


%以下为初始化子函数
function [sysx0strts]=mdlInitializeSizes(x_initial)
sizes = simsizes;%用于设置模块参数的结构体用simsizes来生成
sizes.NumContStates  = 1;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 1;
sizes.NumInputs      = 1;
sizes.DirFeedthrough = 0;%“0”表示:输入和输出间不存在直接比例关系
sizes.NumSampleTimes = 1;   % 
sys = simsizes(sizes);%设置完后,赋给sys输出
x0  = x_initial;%状态变量初始值
str = [];%固定格式
ts  = [0 0];%该取值对应纯连续系统

%以下为计算模块导数子函数
function sys=mdlDerivatives(txu)
dx=-x+u;%对应于该系统的状态空间方程
sys = dx;%把计算得出的导数向量赋给sys输出

%以下为更新模块离散状态子函数
function sys=mdlUpdate(txu)
sys = [];

%以下为计算模块输出子函数
function sys=mdlOutputs(txu)
sys = x;%对应于该系统的状态空间方程

%以下为计算下一个采样时间点子函数
function sys=mdlGetTimeOfNextVarHit(txu)
sampleTime = 1;    %  Example set the next hit to be one second later.
sys = t + sampleTime;

%以下为仿真结束子函数
function sys=mdlTerminate(txu)
sys = [];


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      15811  2010-03-09 15:10  新建文件夹\sfunc_1.mdl

     文件       1734  2010-03-09 15:10  新建文件夹\sfun_1.m

     目录          0  2010-03-09 15:16  新建文件夹

----------- ---------  ---------- -----  ----

                17545                    3


评论

共有 条评论