Introduction et Prise en Main de MATLAB
Introduction et Prise en Main de MATLAB
I. Introduction
MatLab est un puissant outil de calcul numérique, de programmation
et de visualisation graphique. Son nom signifie matrix laboratory,
c'est à dire un environnement interactif de travail avec des matrices.
1
30/01/2021
2
30/01/2021
Le mode interactif
Dans le mode interactif, MATLAB peut être utilisé comme une
"super-puissante" calculatrice scientifique. On dispose des
opérations arithmétiques et d'un ensemble important de fonctions
de calcul numérique et de visualisation graphique.
Par exemple :
3
30/01/2021
4
30/01/2021
On remarque que :
Attention : il très fortement déconseillé d'utiliser des noms de variables déjà utilisées
par Matlab.
Opérations arithmétiques
Les opérations arithmétiques de base dans MATLAB sont : + pour
l'addition, - pour la soustraction, * pour la multiplication et / ou \
pour la division. La division à droite et la division à gauche ne
donnent pas les mêmes résultats, ce sont donc deux opérations
différentes que ce soit pour les scalaires ou pour les vecteurs et
matrices.
Les opérations peuvent être enchaînées en respectant les
priorités usuelles des opérations et en utilisant des parenthèses.
MATLAB possède l'opérateur "^" pour l'élévation à une
puissance entière ou réelle.
L'élévation à une puissance est prioritaire par rapport aux autres
opérations ; l'utilisation des parenthèses est recommandée.
5
30/01/2021
Exemples :
format flottant short
II.4. Tableaux
6
30/01/2021
>> x = [6 4 7]
x=
6 4 7
Afin d'éviter l'affichage du résultat d'une expression quelconque,
on terminera celle-ci par un point-virgule (;)
Autre façon de saisir un vecteur ligne
>> x = [6,4,7] ;
>> size(x)
ans =
1 3
A. HAMANE, Cours Matlab 2ème 30 January 2021
Année ST, Université de Jijel
>> [m n] = size(x)
m=
1
n=
3
7
30/01/2021
>> w = [1 x 1 2 8]
w=
1 6 4 7 1 2 8
A. HAMANE, Cours Matlab 2ème 30 January 2021
Année ST, Université de Jijel
8
30/01/2021
>> x=3:6
x=
3 4 5 6
L'addition et la soustraction de vecteurs de mêmes dimensions se
font élément par élément.
>> x = [0 4 3];
>> y = [2 5 7];
>> x-y
ans =
-2 -1 -4
>> x+y
ans =
2 9 10
A. HAMANE, Cours Matlab 2ème 30 January 2021
Année ST, Université de Jijel
>> 3+x
ans =
3 7 6
>> x-2
ans =
-2 2 1
9
30/01/2021
>> 2*x
ans =
0 8 6
>> x/4
ans =
0 1.0000 0.7500
>> x*tx
ans =
25
>> tx*y
ans =
0 0 0
8 20 28
6 15 21
10
30/01/2021
>> x.*y
ans =
0 20 21
>> x.^2
ans =
0 16 9
>> x./y
ans =
0 0.8000 0.4286
11
30/01/2021
>> matrice=[5 7 9; 1 4 2]
matrice =
5 7 9
1 4 2
>> matrice2=[3 5 7
8 6 10]
matrice2 =
3 5 7
8 6 10
Concaténation de matrices
12
30/01/2021
A=
5 7 3
2 9 4
>> B = [5 3 0; 7 1 6]
B=
5 3 0
7 1 6
>> ConcatHoriz = [A B]
ConcatHoriz =
5 7 3 5 3 0
2 9 4 7 1 6
ConcatVert =
5 7 3
2 9 4
5 3 0
7 1 6
13
30/01/2021
>> MatConcatH=cat(2,A,B)
MatConcatH =
5 7 3 5 3 0
2 9 4 7 1 6
>> MatConcatV=cat(1,A,B)
MatConcatV =
5 7 3
2 9 4
5 3 0
7 1 6
A. HAMANE, Cours Matlab 2ème 30 January 2021
Année ST, Université de Jijel
>> MatConcatH(2,4)
Ans =
7
>> MatConcatH(2,4:6)
ans =
7 1 6
A. HAMANE, Cours Matlab 2ème 30 January 2021
Année ST, Université de Jijel
14
30/01/2021
>> SousMat=MatConcatV(2:3,1:2)
SousMat =
2 9
5 3
>> MatConcatV(:,2)=[ ]
MatConcatV =
5 3
2 4
5 0
7 6
15
30/01/2021
>> page1=ones(3);
>> page2=eye(3);
>> tab=cat(3,page1,page2)
16
30/01/2021
>> ch = 'matlab'
ch =
matlab
17
30/01/2021
L'imaginaire pur i (i2 = -1) est noté i ou j. Un nombre complexe est donc
de la forme z = a + ib ou a + jb. Mais MATLAB, dans ses réponses,
donne toujours le symbole i.
>> i
ans =
0 + 1.0000i
>> j
ans =
0 + 1.0000i
>> z1 = 4-3i
z1 =
4.0000 - 3.0000i
A. HAMANE, Cours Matlab 2ème 30 January 2021
Année ST, Université de Jijel
>> z1'
ans =
4.0000 + 3.0000i
Nous pouvons aussi effectuer les opérations courantes sur les complexes telles que
l'addition, la multiplication, l'élévation à une puissance et la division.
18
30/01/2021
Remarques
>> i = -3;
>> z = 4+2*i
z=
-2
>> a = real(z1)
a=
4
>> b = imag(z1)
b=
-3
19
30/01/2021
Module et argument
Nous pouvons calculer le module et l'argument d'un nombre complexe à
partir de leurs définitions mathématiques.
>> r = abs(z1)
r=
5
>> theta = angle(z1)
theta =
-0.6435
A. HAMANE, Cours Matlab 2ème 30 January 2021
Année ST, Université de Jijel
Rappel
forme algébrique : z = a + ib
forme trigonométrique : z = [r, theta]
r et theta sont respectivement le module et l'argument de z.
La connaissance de l'une de ces formes permet d'aboutir à l'autre.
>> z = r*(cos(theta)+i*sin(theta))
ans =
4.0000 - 3.0000i
>>z= r*exp(j*theta)
ans =
4.0000 - 3.0000i
20
30/01/2021
>> t = [1 2 3]
t=
123
>>h = 56
h=
56
>> clear
efface toutes les variables et données existantes.
21
30/01/2021
MATLAB peut exécuter une séquence d'instructions stockées dans un fichier. Ce fichier
est appelé fichier M (M-file). Ce nom provient du fait que l'extension est ".m".
La majorité de votre travail avec MATLAB sera liée à la manipulation de ces fichiers. Il y
a deux types de fichiers M : les fichiers de commandes (fichiers scripts) et les
fichiers de fonctions.
Les fichiers de commandes (scripts) sont aussi utilisés pour la saisie de données. Dans
le cas de grandes matrices, l'utilisation de scripts vous permet de corriger facilement et
rapidement les erreurs de saisie. Un fichier script peut appeler un autre ou s'appeler lui
même de façon récursive.
Exemple:
22
30/01/2021
Les fichiers fonctions fournissent une extensibilité à MATLAB. Vous pouvez créer de
nouvelles fonctions spécifiques à votre domaine de travail qui auront le même statut
que toutes les autres fonctions MATLAB. Les variables dans les fonctions sont par
défaut locales, mais on peut définir des variables globales.
Exemple :
On va créer une fonction . L’exemple est édité sous le nom f1.m .
23
30/01/2021
L'instruction for
L'instruction while
while conditions
instructions
end
L'instruction if
if condition1
instructions (si la condition1 est vérifiée)
elseif condition2
instructions (si la condition2 est vérifiée)
else
instructions (si les conditions ne sont pas vérifiées)
end
24
30/01/2021
Opérateurs relationnels
Les opérateurs relationnels sont : <, <=, >, >=, ==, ~=
Ces opérateurs peuvent être utilisés avec des scalaires ou des matrices. Le
résultat d'évaluation d'une expression relationnelle est 1 (vrai) ou 0 (faux).
Quand ces opérateurs sont appliqués à des matrices, le résultat est une
matrice, de mêmes dimensions, formée de 0 et de 1, résultats de comparaisons
élément à élément.
Opérateurs logiques
Les expressions relationnelles peuvent être combinées en utilisant les
opérateurs logiques suivants : &, |, ~
qui signifient respectivement "et" (AND), "ou" (OR) et "non" (NOT). Ces
opérateurs sont appliqués sur les matrices élément par élément. Les
opérateurs logiques ont une priorité plus faible que les opérateurs relationnels,
qui à leur tour ont une priorité plus faible que les opérateurs arithmétiques.
II.8. Graphiques 2D et 3D
II.8.1. Graphiques 2D
Une courbe 2D est pour tout logiciel de tracé de courbes représenté par
une série d’abscisses et une série d’ordonnées. Ensuite, le logiciel trace
généralement des droites entre ces points. MATLAB n’échappe pas à la
règle. La fonction s’appelle plot.
L’utilisation la plus simple de l’instruction plot est la suivante.
plot ( vecteur d’abscisses, vecteur d’ordonnées )
[ x1 x2 . . . xn ] [ y1 y2 . . . yn ]
25
30/01/2021
Traçage de courbes:
plot(x,y) Tracer le vecteur y en fonction du vecteur x
plot(t,x,t,y,t,z) Tracer x(t), y(t) et z(t) sur le même graphique
plot(t,z,'r--') Tracer z(t) en trait pointillé rouge
Exemple de courbes
1
sin
0.8 cos
0.6
0.4
0.2
0
Z
-0.2
-0.4
-0.6
-0.8
-1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Y
26
30/01/2021
Format de graphique :
plot(x,y) Tracer y(x) avec échelles linéaires
semilogx(f,A) Tracer A(f) avec échelle log(f)
semilogy(w,B) Tracer B(w) avec échelle log(B)
polar(theta,r) Tracer r(theta) en coordonnées polaires
bar(x,y) Tracer y(x) sous forme des barres
plotyy Graphe avec deux axes y différents à gauche et à droite.
loglog Graphe en 2D avec une échelle logarithmique pour les deux axes.
grid Ajouter une grille
Taper help plot pour avoir la liste des options et la liste des styles et symboles.
27
30/01/2021
Graphique multiple:
On peut tracer plusieurs graphiques dans la même fenêtre en utilisant
l’instruction subplot pour diviser la fenêtre en plusieurs parties.
L’idée générale est de découper la fenêtre graphique en pavés de même
taille, et d’afficher un graphe dans chaque pavé. On utilise l’instruction
précédente en lui spécifiant le nombre de pavés sur la hauteur, le nombre de
pavés sur la largeur, et le numéro du pavé dans lequel on va tracer :
subplot (Nbre pavés sur hauteur, Nbre pavés sur largeur, Numéro pavé)
28
30/01/2021
II.8.2. Graphiques 3D
La commande plot3 est identique à la commande plot, elle ne fait appel qu'à
une coordonnée supplémentaire. La syntaxe de base est plot3(x,y,z). Les
axes, titres et légendes se traitent comme dans le cas des courbes planes, la
commande zlabel est disponible.
Exemple :
Soit l'exemple suivant d'une fonction à 2 variables :
>> Z = sin(X.^2+Y.^2)./(X.^2+Y.^2);
29
30/01/2021
>> mesh(X,Y,Z)
Nous pouvons rajouter un titre pour le tracé (title), des légendes pour les
axes (xlabel, ylabel et zlabel) ainsi qu'un quadrillage (grid).
2 2 2 2
sin ( + )/( + )
0.5
-0.5
4
2 4
0 2
0
-2 -2
-4 -4
angle = - : angle = - :
30
30/01/2021
>> P = [1 -6 9]
P=
1 -6 9
Le nombre d'éléments du tableau est égal au degré du polynôme +1.
>> Q = [1 2 0 -3]
Q=
1 2 0 -3
>> roots(P)
ans =
3
3
>> roots(Q)
ans =
-1.5000 + 0.8660i
-1.5000 - 0.8660i
1.0000
Q(x) = (x −1)(x2 + 3x + 3)
A. HAMANE, Cours Matlab 2ème 30 January 2021
Année ST, Université de Jijel
31
30/01/2021
Evaluation de polynômes
Pour évaluer un polynôme en un point, on utilise la fonction polyval.
Valeur du polynôme P en 1 et celle du polynôme Q en 0
>> polyval(P,1)
ans =
4
>> polyval(Q,0)
ans =
-3
Détermination d'un polynôme à partir de ses racines
On peut aussi déterminer les coefficients d'un polynôme à partir de ses
racines en utilisant la fonction poly.
On cherche, par exemple, le polynôme qui a pour racines : 1, 2 et 3.
Celles-ci peuvent être définies comme les éléments d'un vecteur r.
>> r = [1 2 3]
r=
1 2 3
A. HAMANE, Cours Matlab 2ème 30 January 2021
Année ST, Université de Jijel
>> K = poly(r)
K=
1 -6 11 -6
qui correspond à : K(x)= x3 −6x2 +11x−6. En multipliant par un réel non nul,
tous les coefficients de K, on trouve un autre polynôme ayant les mêmes
racines que K.
32
30/01/2021
Représentation graphique
Pour tracer la représentation graphique du polynôme K(x), définissons un
domaine pour la variable x qui contient les racines de K
>> x = 0:0.1:4;
>> y = polyval(K,x);
>> plot(x,y)
>> grid
>> title('tracé de y = x^3-6x^2+11x-6')
>> xlabel('x')
>> ylabel('y')
tracé de y = x3-6x2+11x-6
6
2
X: 1
Y: 0
0
y
-2
-4
-6
0 0.5 1 1.5 2 2.5 3 3.5 4
x
33
30/01/2021
>> P1 = [1 2]
P1 =
1 2
>> P2 = [1 -2 1]
P2 =
1 -2 1
>> P3 = conv(P1,P2)
P3 =
1 0 -3 2
En divisant P3 par P1, on retrouve bien le polynôme P2 (le reste R est nul).
34
30/01/2021
35
30/01/2021
36
30/01/2021
>> A = [2 3; 1 -2];
>> B= [8 -3]';
>> inv(A)*B
ans =
1
2
A. HAMANE, Cours Matlab 2ème 30 January 2021
Année ST, Université de Jijel
La matrice A et le vecteur B sont entrés comme des constantes qui prennent les valeurs
des variables spécifiées et connues dans l’espace de travail MATLAB.
37
30/01/2021
Exercice 1.
Corrigé 1.
% Ce programme calcule la résistance équivalente R de trois
% résistances montées en série ou en parallèle.
disp (' entrer dans l’ordre les valeurs de chaque résistance ')
for i=1:3 ;
disp(['entrer la valeur de R',num2str(i),' (en Ohm)']) ;
R(i)=input(' ') ;
end
disp ('quel type de montage voulez-vous ? série =1 ou parallèle = 0 ?')
n=input(' ');
if n==1 ;
R=R(1)+ R(2)+ R(3);
else if n==0;
R=(R(1)*R(2)+R(1)*R(3)+R(2)*R(3))/(R(1)*R(2)*R(3));
end
end
disp(['La résistance équivalente est : ',num2str(R),' (Ohms)'])
A. HAMANE, Cours Matlab 2ème 30 January 2021
Année ST, Université de Jijel
38
30/01/2021
Exercice 2.
Ecrire une fonction de Matlab qui donne le périmètre et la surface d’un cercle
connaissant son rayon R.
Corrigé 2.
function [d,s]=perisurf(R)
d=2*R*pi;
s=R*R*pi;
39
30/01/2021
Exercice 3.
(on commencera par créer un tableau de valeur pour x avec un pas de 0.01).
Corrigé 3.
x=0:0.01:10;
y=exp(-(x-5).^2/2);
figure
plot(x,y,'or')
xlabel('axe des x')
ylabel('axe des y')
Exercice 4
Corrigé 4
(respectivement L=2*eye(10)-3*diag(ones(8,1),-2)).
40
30/01/2021
Exercice 5.
On veut calculer le nombre factoriel d’un entier naturel n, soit n!=n(n-1)(n-
2)×…×2×1. Le programme demandera à l’utilisateur de rentrer la valeur de n et
affichera en sortie la décomposition de n en tous ses facteurs et donnera aussi
le résultat de la valeur de n!
Corrigé 5.
disp('entrer le valeur de N' )
N=input( ' ' )
S=1
while N>=1
S=S*N
N=N-1;
disp( N )
end
disp( ['N! = ' , num2str(S)] )
41