Matlab / Simulink – une introduction
» pwd
» dir
» cd ..
» cd nom_répertoire
» help
» help nom_fonction
Manipulations de base : affectation et calculs de base
» a=2 % on peut ajouter ‘;’ à la fin pour éviter l’affichage
» z1=1+j % j des complexes
» z2=2*i % i=j
» U=[2;3] % vecteur colonne
» V=[4 5] % vecteur ligne
» M=[1,2;3,4] % matrice
» m12=M(1,2) % pour récupérer le terme ligne 1, colonne 2
» J=U*V % multiplication
» V2=1:5 % vecteur ligne des entiers de 1 à 5
» V2=0:0.1:0.8 % vecteur ligne des nombres de 0 à 0.8 avec un pas de 0.1
» V3=V2’ % transposée conjugée
» V3=V2.’ % transposée
» J=U.*V’ % multiplication terme à terme
Tracé de courbes
» t=linspace(0,2*pi,50) % pi=3.14…
» x=20*sin(t)
» plot(t,x)
Exécution d’un programme
» NomProg
! " # $ %
& ' $ "
()
*
if a==1,
disp(‘a est égal à 1’) % affichage else
disp(‘a est différent de 1’) end
* +
for ind=1:10,
disp([‘ind est égal à ‘ num2str(ind)]) end
Programmation d’une fonction
, # %-&
% essai de fonction à deux paramètres d’entrée et deux paramètres de sortie
function [y1,y2]=essai_f1(u1,u2) y1=u1+u2;
y2=u1*u2;
. % /0
* %
» [yy1,yy2]=essai_f1(1,2) .
% essai de fonction à paramètres vectoriels function y=essai_f2(u)
u1=u(1); u2=u(2);
y1=u1+u2;
y2=u1*u2;
y=[y1;y2];
. % /1 %
» uu=[1;2]
» yy=essai_f2(uu)
2 3 +
-
1 x MATLAB
Function MATLAB Fcn 1
u
Simulation, sous Simulink, d’un système dynamique avec une S-function
4 .- $ . 3$ & 5
" 6 & 5
"
( )
= +
= 1 0 1
1 x system
S-Function 1
u
2 5 3 +.-
function [sys,x0]=model(t,x,u,flag),
if flag==0, % Initialisation
sys=[1 0 1 1 0 0]; % nbre d’états continus, nbre d’états discrets, nbre de sorties, nbre d’entrées
x0 = 0; % valeur initiale des états
elseif flag==1, % calcul de dx/dt sys=(2*x+1)*u^2;
elseif flag==3, % calcul des sorties sys=x;
else
sys=[];
end
2 5 7 . 3
1 x Product
s 1 Integrator
2 Gain
1 Constant 1
u
Exemple de S-fonction discrète
7 8 7 0
& 7 5
- & "
, 9 2&
% Modèle d'un rapport-cyclique
%
% u = alpha (entrée)
% x = [Etat, alpha0]
% y = Etat
% Etat = 1 : niveau haut
% Etat = 0 : niveau bas
% alpha0 : valeur du rapport-cyclique à t(k)
% sauvegardée dans x(2)
function [sys,x0]=RappCycl(t,x,u,flag,T),
if flag==0, % Initialisation
sys=[0 2 1 1 0 0]; % 0 états continus; 2 états discrets; 1 sortie;
1 entrée
x0 = [1; 0.02];
elseif flag==2, % x(k+1)
alpha=u; Etat=x(1); alpha0=x(2);
switch Etat,
case 1, % Etat == 1 sys=[0; alpha0];
case 0, % Etat ==0
sys=[1; min([0.98 max([0.02 alpha])])];
end
elseif flag==3, % y(k) sys=x(1);
elseif flag==4, % t(k+1)
alpha=u; Etat=x(1); alpha0=x(2);
switch Etat, case 1,
sys=t+alpha0*T;
case 0,
sys=t+(1-alpha0)*T;
end else
sys=[];
end
4
RappCycl rapport-cyclique 0.7
alpha
C To Workspace1 t
To Workspace Clock
' 5 5 : .- $ %
%