function [sys,x0,str,ts] = s1(t,x,u,flag)
%s-funkcia pre dynamicky system opisany
%dx/dt=-x+u
%y=x

switch flag,
case 0
   [sys,x0,str,ts] = mdlInitializeSizes; % Inicializacia
case 1
   sys = mdlDerivatives(t,x,u); % vypocet derivacii
case 3
   sys = mdlOutputs(t,x,u); % vypocet vystupov
case {2, 4, 9} % nepouzite hodnoty premennej flag
   sys = [];
otherwise
   error(['unhandled flag = ',num2str(flag)]); % chybove hlasenie
end

% do tejto funkcie vkladame vlastne udaje
function [sys,x0,str,ts] = mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 1; % pocet spojitych stavov
sizes.NumDiscStates  = 0; % pocet diskretnych stavov
sizes.NumOutputs     = 1; % pocet vystupov
sizes.NumInputs      = 1; % pocet vstupov
sizes.DirFeedthrough = 0; % = 0 v pripade, ze matrica D is nulova, t.j. ak vystupy su definovane len pomocou stavov, inak =1
sizes.NumSampleTimes = 1; % 1 pre spojite systemy
sys = simsizes(sizes); 
x0 = 0; % zaciatocna podmienka pre dif. rovnicu
str = []; % str je prazdna matica
ts = [0 0]; % velkost periody vzorkovania, pre spojite systemy 0 0

% do tejto funkcie vkladame vlastne udaje - rovnice dynamiky
function sys = mdlDerivatives(t,x,u)
sys = -x + u;

% do tejto funkcie vkladame vlastne udaje - rovnice vystupu
function sys = mdlOutputs(t,x,u)
sys = x ;
