% Définitions, discrétion et conversion entre les représentations
% A. Desbiens, mars 2015


% Le système est G(s)= [2*(10s+1)e^(-4s)] / [(1+5s)(1+7s)]


% Définition du système par une fonction de transfert continue
Gtfc=tf(2*[10 1],conv([5 1],[7 1]),'inputdelay',4) % num. et den. en puissance décroissante de s
Gtfc.num{:}
Gtfc.den{:}
Gtfc.inputdelay


% Conversion en une représentation d'état continue et discrétisation selon une période
% d'échantillonnage = 2
% Discrétisation d'un procédé: utiliser la méthode 'zoh' (bloqueur d'ordre zéro)
% Discrétisation d'un régulateur: utiliser la méthode 'tustin' (bilinéaire)
%
Gssc=ss(Gtfc) % Conversion en une représentation d'état continue
Gssc.A
Gssc.B
Gssc.C
Gssc.D
Ts=2;
Gssd=c2d(Gssc,2,'zoh') % Discrétisation


% Discrétisation selon une période d'échantillonnage = 2 et conversion en
% représentation d'état
% Discrétisation d'un procédé: utiliser la méthode 'zoh' (bloqueur d'ordre zéro)
% Discrétisation d'un régulateur: utiliser la méthode 'tustin' (bilinéaire)
%
Ts=2;
Gtfd=c2d(Gtfc,Ts,'zoh') % Discrétisation
Gssd=ss(Gtfd) % Conversion
% Ne donne pas les mêmes matrices que le paragraphe précédent mais  
% elles représentent le même système



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% AUTRES EXEMPLES


% Definition d'un système continu par ses matrices d'état
Ac=[-0.3 -0.2; 0.1 0];
Bc=[1; 0];
Cc=[0.6 0.5];
Dc=[0];
Gssc=ss(Ac,Bc,Cc,Dc)


% Definition d'un système discret par ses matrices d'état et sa période
% d'échantillonage
Ts=2;
Ad=[1.4 -0.5; 1 0];
Bd=[1; 0];
Cd=[0.9 -0.7];
Dd=[0];
Gssd=ss(Ad,Bd,Cd,Dd,Ts)


% Definition d'un système discret par sa fonction de transfert et sa période
% d'échantillonage
%
% num. et den. en puissance décroissante de z:
% G(z) = [0.9 - 0.7z^(-1)]z^(-3) / [1 - 1.4z^(-1) + 0.5z^(-2)]
%      = [0z^4 + 0z^3 + 0z^2 + 0.9z -0.7] / [1z^4 -1.4z^3 + 0.5z^2 + 0z + 0]
Ts=2;
Gtfd=tf([0 0 0 0.9 -0.7],[1 -1.4 0.5 0 0],Ts) 


% Conversion de discret vers continu
% Pour un procédé: utiliser la méthode 'zoh' (bloqueur d'ordre zéro)
% Pour un régulateur: utiliser la méthode 'tustin' (bilinéaire)
% Certaines méthodes peuvent ne pas fonctionner avec certains modèles.
Gssc=d2c(Gssd,'zoh')

