Matlab / Simulink – une introduction
Transcription
Matlab / Simulink – une introduction
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]; . % » uu=[1;2] /1 % » yy=essai_f2(uu) 2 3 + MATLAB Function 1 u 1 x MATLAB Fcn Simulation, sous Simulink, d’un système dynamique avec une S-function 4 ." $ . 3$ 6 &5 &5 " = (1 + 0) 1 = 1 u system 1 x S-Function 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 1 u Product . 1 s Integrator 2 Gain 1 Constant 3 1 x Exemple de S-fonction discrète 78 & 7 70 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 t Clock ' 5 0.7 RappCycl C alpha rapport-cyclique To Workspace1 5 % To Workspace : .- $ %