m05_lianxu.m

来自「matlab的经典讲义」· M 代码 · 共 43 行

M
43
字号
function [sys,x0,str,ts] = m05_lianxuxitong(t,x,u,flag,A,B,C,D)
%CSFUNC An example M-file S-function for defining a continuous system.  
%   Example M-file S-function implementing continuous equations: 
%      x' = Ax + Bu
%      y  = Cx + Du

switch flag,
  case 0,
    [sys,x0,str,ts]=mdlInitializeSizes(A,D);
  case 1,
    sys=mdlDerivatives(t,x,u,A,B);
case 3,
    sys=mdlOutputs(t,x,u,C,D);
case { 2, 4, 9 },
    sys = [];
  otherwise
    error(['Unhandled flag = ',num2str(flag)]);
end
%=============================================================================
function [sys,x0,str,ts]=mdlInitializeSizes(A,D)

sizes = simsizes;
sizes.NumContStates  = size(A,1);
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = size(A,1)+size(D,1);
sizes.NumInputs      = size(D,2);
sizes.DirFeedthrough = size(D,1);
sizes.NumSampleTimes = 1;

sys = simsizes(sizes);
x0  = zeros(size(A,1),1);
str = [];
ts  = [-1 0];
%=============================================================================
function sys=mdlDerivatives(t,x,u,A,B)

sys = A*x + B*u;
%=============================================================================
function sys=mdlOutputs(t,x,u,C,D)

sys = C*x + D*u;

⌨️ 快捷键说明

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