⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scontinuous.m

📁 《matlab使用详解》的部分源码
💻 M
字号:
function [sys,x0,str,ts] =Scontinuous(t,x,u,flag)
%定义连续系统的S-函数Scontinuous。
%生成连续系统状态。
A=[-2   -1 ;1   0];
B=[1    -5 ;0  -3];
C=[0    3 ;2   0];
D=[-1    0;1   0];
switch flag,
%初始化状态。
  case 0,
    [sys,x0,str,ts]=mdlInitializeSizes(A,B,C,D);
%计算连续状态变量。
  case 1,
    sys=mdlDerivatives(t,x,u,A,B,C,D);
  case 2,
    sys=mdlUpdate(t,x,u);
%计算系统输出。
  case 3,
    sys=mdlOutputs(t,x,u,A,B,C,D);
  case 4,
    sys=mdlGetTimeOfNextVarHit(t,x,u);
  case 9,
    sys=mdlTerminate(t,x,u);
%处理错误。
  otherwise
    error(['Unhandled flag = ',num2str(flag)]); 
end
%==================初始化状态函数============================================
function [sys,x0,str,ts]=mdlInitializeSizes(A,B,C,D)
sizes = simsizes;
 
sizes.NumContStates  = 2;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 2;
sizes.NumInputs      = 2;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 =zeros(2,1);                    %设置为零初始状态。
str = [];
ts  = [0 0];
%============================计算连续状态变量================================
function sys=mdlDerivatives(t,x,u,A,B,C,D)
sys = A*x+B*u;
%==========================================================================
function sys=mdlUpdate(t,x,u)
sys = [];
%===============================计算输出向量================================
function sys=mdlOutputs(t,x,u,A,B,C,D)
sys = C*x+D*u;
%==========================================================================
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1;
sys = t + sampleTime;.
%==========================================================================
function sys=mdlTerminate(t,x,u)
sys = [];
%结束仿真。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -