User`s guide

2 Writing S-Functions As M-Files
2-12
function [sys,x0,str,ts] = dsfunc(t,x,u,flag)
% An example M-file S-function for defining a discrete system.
% This S-function implements discrete equations in this form:
% x(n+1) = Ax(n) + Bu(n)
% y(n) = Cx(n) + Du(n)
%
% Generate a discrete linear system:
A=[–1.3839 –0.5097
1.0000 0];
B=[–2.5559 0
0 4.2382];
C=[ 0 2.0761
0 7.7891];
D=[ –0.8141 –2.9334
1.2426 0];
switch flag,
case 0
sys = mdlInitializeSizes(A,B,C,D); % Initialization
case 2
sys = mdlUpdate(t,x,u,A,B,C,D); % Update discrete states
case 3
sys = mdlOutputs(t,x,u,A,B,C,D); % Calculate outputs
case {1, 4, 9} % Unused flags
sys = [];
otherwise
error(['unhandled flag = ',num2str(flag)]); % Error handling
end
% End of dsfunc.
%==============================================================
% Initialization
%==============================================================
function [sys,x0,str,ts] = mdlInitializeSizes(A,B,C,D)