Vous êtes sur la page 1sur 27

 

Le langage de programmation Matlab :

Utilisation des scripts 


 

Un script se présente sous la forme d'un fichier texte avec l'extension .m

Quand on lance un script, Matlab exécute une à une les commandes.

Un script est un programme : Matlab est également un langage de programmation.

 1- Premier script
 2- Affichage à l'écran : Fonction DISP
 3- Saisie au clavier : Fonction INPUT
 4- Boucle FOR
 5- Boucle WHILE
 6- IF ELSE ELSEIF
 7- BREAK
 8- Exemples de scripts
o Résolution d'une équation du 2ème degré (dans R, espace des
nombres réels)
o Résolution d'une équation du 2ème degré (dans C, espace des
nombres complexes)
o Calcul de la factorielle n!
o Diagrammes de Bode d'un filtre analogique H(p)
o Diagrammes de Bode d'un filtre numérique H(z)

Convention de couleurs :

 en bleu : commandes, données ... saisies par l'utilisateur (dans la fenêtre de


commande)
 en noir : résultat fourni par Matlab (dans la fenêtre de commande)
 en rouge : script (programme)

Télécharger tous les scripts 


 

1- Premier script : Graphe d'une fonction à une variable


 

Au lieu de taper la série de commandes qui permet de tracer le graphe de la


fonction y(x) =100x/((50+x)2) :

>> fplot('100*x/((50+x)^2)',[0 200])

>> grid on

>> xlabel('R (en ohms)')

>> ylabel('P (en watts)')

>> title('Courbe P(R)')

vous pouvez une fois pour toute, écrire un script.

Pour cela, il vous faut un éditeur de texte (le bloc-notes par exemple) :

Le signe % signifie que le reste de la ligne est un commentaire.

Pour exécuter le script, il suffit de taper son nom dans la fenêtre de commande :

>> script1
 

La commande ECHO ON permet d'afficher à l'écran, les commandes exécutées par le


script :

>> echo on

>> script1

% script1.m

fplot('100*x/((50+x)^2)',[0 200]);

grid on;

xlabel('R (en ohms)');

ylabel('P (en watt)');


title('Courbe P(R)');

>> echo off

2- Affichage à l'écran : fonction DISP


Cette fonction permet d'afficher proprement des valeurs numériques ou bien du texte
(chaîne de caractères) à l'écran.

 Affichage de nombres :

>> a=15;

>> disp(a)

15

>> b=[1 8 9];

>> disp(b)

189

>> disp([17 -25.36 sqrt(6)])

17.0000 -25.3600 2.4495

>> disp([17 ; -25.36 ; sqrt(6)])

17.0000

-25.3600

2.4495

>> a=12;

>> disp([17 a sqrt(a+13)])


17 12 5

 Affichage de textes :

>> c='Bonjour';

>> disp(c)

Bonjour

>> disp('Bonjour')

Bonjour

>> disp(['Pierre' 'Paul' 'Jacques'])

PierrePaulJacques

La commande BLANKS(n) affiche n espaces :

>> disp(['Pierre' blanks(1) 'Paul' blanks(1) 'Jacques'])

Pierre Paul Jacques

 Affichage combiné de textes et de nombres :

La fonction NUM2STR convertit un nombre en une chaîne de caractères.

>> disp(['Il est ' num2str(12) ' heures'])

Il est 12 heures

>> a=18;

>> disp(['Il est ' num2str(a) ' heures ' num2str(58)])

Il est 18 heures 58

 
3- Saisie au clavier : fonction INPUT
Cette fonction effectue la saisie de valeurs numériques ou bien de textes.

 Saisie de nombres :

% script2.m

disp('Bonjour!');

x0=input('Taper la valeur de R min : ');

x1=input('Taper la valeur de R max : ');

disp(['R min =' num2str(x0)]);

disp(['R max =' num2str(x1)]);

fplot('100*x/((50+x)^2)',[x0 x1]) ;

grid on ;

xlabel('R (en ohms)') ;

ylabel('P (en watt)') ;

title('Courbe P(R)')

disp('Au revoir.');

>> script2

Bonjour!

Taper la valeur de R min : 20

Taper la valeur de R max : 100

R min =20
R max =100

Au revoir.

 Saisie de textes :

% scrip2_1.m

nom=input('Taper votre nom : ','s');

prenom=input('Taper votre prénom : ','s');

age=input('Taper votre âge : ');


disp([nom blanks(1) prenom]);

disp(['Age : ' num2str(age)]);

>> scrip2_1

Taper votre nom : Dupont

Taper votre prénom : Jérôme

Taper votre âge : 21

Dupont Jérôme

Age : 21

4- Boucle FOR
Cette instruction permet de répéter un bloc d'instructions, un nombre déterminé de
fois.

Synthaxe :

for expression ,

bloc d'instructions ;

end

Exemples :

% script3.m

for i=1:5,

disp([i i*i]);
end

>> script3

11

24

39

4 16

5 25

% scrip3_1.m

n=input('Nombre de boucles = ? ');

for i=1:n,

disp(i);

end

>> scrip3_1

Nombre de boucles = ? 4

 
% script4.m

for i=1:2:10,

disp(i);

end

>> script4

% script5.m

for i=1:3,

for j=1:6,

a(i,j)=i+10*j ;

end

end

disp(a);

>> script5

11 21 31 41 51 61
12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE
Synthaxe :

while condition ,

bloc d'instructions ;

end

Le programme teste la condition :

Si la condition est fausse, le programme saute à l'instruction qui suit END.

Si la condition est vraie, le bloc d'instructions est exécuté, puis le programme teste à
nouveau la condition ...

Attention aux bugs de programmation !

si la condition est toujours vraie, la boucle s'exécute indéfiniment : le programme est


"planté".

 Opérateurs de comparaison :

== égal
> supérieur
< inférieur
supérieur
>=
ou égal
inférieur ou
<=
égal
~= différent

Exemples :

% script6.m

n=0 ;

while (n<10),

n=n+1;

disp(n);

end

La boucle est exécutée tant que n est inférieur à 10 :

>> script6

9
10

 Opérateurs logiques :

ET logique
&
(AND)
OU logique
|
(OR)
~ NON logique

% script7.m

note=-1;

while ((note<0) | (note>20)),

note=input('taper la note (0 à 20) : ');

end

disp(['note = ' num2str(note)]);

La boucle est exécutée tant que la note est inférieure à 0 ou bien supérieure à 20.

Cela permet de saisir une note forcément comprise entre 0 et 20 :

>> script7

taper la note (0 à 20) : 30

taper la note (0 à 20) : 17

note =17

 
6- Instructions IF ELSE ELSEIF
Synthaxe :

 IF

if condition ,

bloc d'instructions ;

end

Le bloc d'instructions est exécuté si la condition est vraie.

Autrement, il est ignoré.

 IF ELSE

if condition ,

bloc d'instructions 1 ;

else

bloc d'instructions 2 ;

end

Le bloc d'instructions 1 est exécuté si la condition est vraie.

Sinon, c'est le bloc d'instructions 2 qui est exécuté.

 IF ELSE IF

if condition1 ,
bloc d'instructions 1 ;

else if condition2 ,

bloc d'instructions 2 ;

end

Le bloc d'instructions 1 est exécuté si la condition 1 est vraie.

Sinon, si la condition2 est vraie, le bloc d'instructions 2 est exécuté.

% script8.m

note=-1;

while ((note<0) | (note>20)),

note=input('Taper la note (0 à 20) : ');

if (note<0),

disp ('Valeur invalide (note < 0)');

end

if (note>20),

disp ('Valeur invalide (note > 20)');

end

end

disp('note = ');

disp(note);
 

>> script8

Taper la note (0 à 20) : -5

Valeur invalide (note < 0)

Taper la note (0 à 20) : 25

Valeur invalide (note > 20)

Taper la note (0 à 20) : 12

note =

12

7- Instruction BREAK
L'instruction BREAK permet de sortir d'une boucle FOR ou d'une boucle WHILE.

% script11.m

for i=1:10,

if i==5,

break;

end

disp(i);

end

>> script11
1

% script12.m

i=0;

while 1,

i=i+1;

if i>5,

break;

end

disp(i);

end

La condition while 1 est toujours vraie.

Le seul moyen de sortir de la boucle est d'utiliser l'instruction BREAK.

>> script12

5
 

8- Exemples de scripts
 

8-1- Résolution d'une équation du 2ème degré (dans R)

8-2- Résolution d'une équation du 2ème degré (dans C)

8-3- Calcul de la factorielle n!

8-4- Diagrammes de Bode d'un filtre analogique H(p)

8-5- Diagrammes de Bode d'un filtre numérique H(z)

8-1- Résolution d'une équation du 2ème degré (dans R,


espace des nombres réels)
 

% trinome.m

disp('Calcul dans R des racines de ax²+bx+c=0');

choix='Y';

while (choix~='N' & choix~='n'),

a=0;

while (a==0),

a=input('a=? ');

if (a==0),

disp ('Valeur non valide !');

end
end

b=input('b=? ');

c=input('c=? ');

delta=b*b-4*a*c;

if (delta<0),

disp('Pas de racine réelle.');

end

if (delta==0),

disp('Une racine double :');

racine=-b/(2*a);

disp(racine);

end

if (delta>0),

disp('Deux racines :');

racine1=(-b+sqrt(delta))/(2*a);

racine2=(-b-sqrt(delta))/(2*a);

disp(racine1);

disp(racine2);

end

choix=input('Un autre calcul (O/N)? ','s');

end

 
>> trinome

Calcul dans R des racines de ax²+bx+c=0

a=? 0

Valeur non valide !

a=? 1

b=? 2.36

c=? -4.5

Deux racines :

1.2474

-3.6074

Un autre calcul (O/N)? n

8-2- Résolution d'une équation du 2ème degré (dans C,


espace des nombres complexes)
 

% trinome1.m

disp('Calcul dans C des racines de ax²+bx+c=0');

p(1)=input('a=? ');

p(2)=input('b=? ');

p(3)=input('c=? ');

disp('Racines :');

disp(roots(p));
 

>> trinome1

Calcul dans C des racines de ax²+bx+c=0

a=? 2+i

b=? -5

c=? 1.5-5i

Racines :

0.8329 + 0.6005i

-0.2079 - 0.6005i

8-3- Calcul de la factorielle n!


 

% facto.m

disp('Calcul de la factorielle') ;

n=input('n = ? ') ;

fact=1;

for i=1:n,

fact=fact*i;

end

disp([num2str(n) '!=']);

format long e;

disp(fact);
% (C) Fabrice Sincère

>> facto

Calcul de la factorielle

n = ? 134

134!=

1.992942746161518e+228

8-4- Diagrammes de Bode d'un filtre analogique H(p)


 

Exemple :

Soit un filtre passe-bas du deuxième ordre dont voici la fonction de transfert :

 
>> bode

Ce script Matlab permet de tracer les diagrammes de Bode.

Il nécessite le fichier trans.m (fichier de définition de la fonction de transfert).

Gamme de fréquences : f min (en Hz)=? 100

f max (en Hz)=? 100000

Nombre de points =? 1000

Figure 1 -> gain en fonction de la fréquence

Figure 2 -> déphasage en fonction de la fréquence

 
 

Télécharger le script 

Compléments

8-5- Diagrammes de Bode d'un filtre numérique H(z)


 

Exemple :

Soit un filtre numérique récursif passe-bande dont voici la fonction de transfert en z :

 
 

>> bodenum

Ce script Matlab permet de tracer les diagrammes de Bode d'un filtre


numérique.

Il nécessite le fichier transnum.m (fichier de définition de la fonction de transfert


en z).

Gamme de fréquences :

Fe : fréquence d'échantillonnage

f min / Fe =? 0.001

f max / Fe =? 0.5

Nombre de points =? 1000

Figure 1 -> Diagramme de Bode du gain

Figure 2 -> Diagramme de Bode du déphasage

Figure 3 -> Amplification en fonction de la fréquence

Figure 4 -> Déphasage en fonction de la fréquence

 
 
Télécharger le script 

(C) Fabrice Sincère ; Version 1.1.10

Vous aimerez peut-être aussi