Académique Documents
Professionnel Documents
Culture Documents
Introduction –MATLAB
Matlab signifie MATrix LABoratory ou Laboratoire des Matrice est un langage
simple et très efficace, optimisé pour le traitement des matrices et le calcul
numérique.
Matlab est beaucoup plus concis que les langages classiques tels que C, Pascal,
Fortran, Basic.
On peut enrichir Matlab en ajoutant des “boîtes à outils” (toolbox) qui sont des
ensembles de fonctions supplémentaires, pour traiter des applications
particulières (traitement de signaux, analyses statistiques, optimisation,).
Si le script est écrit dans le fichier de nom nom.m on l'exécute dans la fenêtre
MATLAB en tapant nom. Même si l'on ne souhaite pas à proprement parler écrire
de programme, utiliser un script est très utile.
Les fichiers de fonctions ont deux rôles : Ils permettent à l'utilisateur de définir
des fonctions qui ne figurent pas parmi les fonctions incorporées de MATLAB
(<< built-in functions >>) et de les utiliser de la même manière que ces dernières
(ces fonctions sont nommées fonctions utilisateur).
3
séquence d'instructions
où
Dans une fenêtre cmdtool, taper « matlab ». MATLAB répond par le symbole
Une Fenêtre Commande dans laquelle on peut taper les instructions une
ligne à la fois.
4
La liste des variables stockées dans l’espace de travail peut être obtenue par
les commandes :
Répertoire courant
>> path
>>USERPATH : est un unique dossier qui est propre `a l’utilisateur lors d’une
session.
En ligne de commande :
userpath(newpath)
Lorsque la fonction est définie sur le corps des nombres complexes l'argument peut être de
type complexe. On dispose également de fonctions spécifiques aux complexes:
conj(z) : le conjugué de z,
abs(z) : le module de z,
angle(z) : argument de z,
real(z) : partie réelle de z,
imag(z) : partie imaginaire de z.
1. Matrices
MATLAB ne fait pas de différence entre les deux. Avec Matlab, on utilise les
crochets [et] pour définir le début et la fin de la matrice. Ainsi pour définir une
variable A contenant la matrice, on pourra écrire :
Le symbole "," est le séparateur de colonne et ";" séparateur de ligne. On peut aussi définir
des vecteurs, ligne ou colonne, à partir de cette syntaxe (un espace est interprété comme une
virgule)
1.1 Matrices par blocs :
7
2. Vecteurs :
Une matrice est un tableau de n lignes et m colonnes donc de n vecteurs lignes et m vecteurs
colonnes.
Exemple de représentation de vecteur
– Vecteur ligne : x = [1 2 3 4 5] ou x = [1, 2, 3, 4,5]
– Vecteur colonne : x = [1;2;3 ; 4 ; 5]
Longueur d’un vecteur : la Commande length(x)
-Division de matrices :
La division a un sens vis- à-vis des inverses de matrices. Ainsi A/B représente A
multiplié (au sens des matrices) par la matrice inverse de B. Il existe aussi une
division à gauche qui se note \. Ainsi A\B signifie l'inverse de A multiplié par B.
Ce symbole peut être aussi utilisé pour résoudre des systèmes linéaires : si v est
-1
un vecteur, A\v représente mathématiquement A v, c'est- à-dire la
solution du système linéaire Ax = v.
-transposition d’une matrice : par le ‘ : exemple A’ est le transposé de A.
9
Exercice : On pose
Exercice 2 :
En effet un tableau doit être d'un type donné, les éléments d'un même tableau ne
peuvent donc être des chaînes de caractères et des valeurs numériques. On a donc
recours à la commande num2str (<< number to string>>. Par défaut la commande
num2str affiche 4 décimales mais il est possible de lui spécifier le nombre de
décimales souhaité en second paramètre.
X = rand(5,3);
disp(' Corn Oats Hay')
Corn Oats Hay
disp(X)
0.8147 0.0975 0.1576
0.9058 0.2785 0.9706
0.1270 0.5469 0.9572
0.9134 0.9575 0.4854
0.6324 0.9649 0.8003
Une valeur numérique est directement affectée à la variable var_x tandis qu'une
instruction MATLAB est évaluée et le résultat est affecté à la variable var. Il est
possible de provoquer des sauts de ligne pour aérer le présentation en utilisant le
symbole \n de la manière suivante: var_x = input('\n une phrase : \n ').
Si l'on souhaite saisir une réponse de type chaîne de caractères on utilise la syntaxe
var_x = input(' un mot ou groupe de mots ','s'). Signalons qu'un retour chariot
(sans autre chose) initialise la variable var au tableau vide []. Voici un exemple
d'utilisation de la commande input (on suppose que la variable res contient une
valeur numérique).
La fonction input permet la saisie d’une valeur depuis le clavier, pour les valeurs
numériques:
y=
200
V- LES SORTIES
La commande standard d'écriture dans la fenêtre d'exécution est fprintf qui a la structure
générale suivante :
fprintf(format,var1,var2,...)
où format est une chaîne de caractères décrivant le format d'écriture des variables var1,var2,...
que l'on souhaite afficher. Les principaux types de formats d'écriture sont :
Par souci de simplicité, on peut se contenter d'utiliser les formats %d,%f,%e sans spécifier de
longueur précise. Par ailleurs on dispose de certains opérateurs de mise en forme , par exemple
\n pour passer à la ligne. Ainsi, on écrira, par exemple :
Exemple :
13
prenom = 'Amadou';
age = 23;
X = sprintf('%s aura %d cette année.',prenom,age);
disp(X)
Amadou aura 23 cette année.
Utiliser fprintf pour afficher directement le texte sans créer de variable.
Cependant, pour terminer correctement l'affichage, vous devez terminer le
texte avec le métacaractère de nouvelle ligne (\ n).
Exemple 3 :
prenom = 'Amadou';
14
age = 23;
fprintf('%s aura %d cette annee.\n',prenom,age);
Amadou aura 23 cette année.
x2=(-b+sqrt(d))/(2*a);
disp('L’’équation '); disp(strEq);
disp('a deux solutions :'); disp(x1);
disp(x2); else if d==0
x0=-b/(2*a);
disp('L’’équation '); disp(strEq);
disp('a une seule solution :');
disp(x0);
else if d<0
disp('L’’équation ');
disp(strEq);
disp('n’a pas de solutions réelles.');
end
end
end
boucle for
boucle while
Une expression logique est une expression dont le résultat peut être vrai ou
faux. La suite d’instructions est le traitement à effectuer tant que expression
logique est vraie.
if condition
suite d'instructions
16
...
elseif condition2
suite d'instructions différente
...
else suite d'instructions
end
switch expr
case case_expr,
suite d'instructions différente
case {case_expr1, case_expr2, case_expr3,...}
suite d'instructions différente
...
otherwise,
suite d'instructions différente
end
Instructions :
1-placer le fichier à importer dans le répertoire courant de Matlab (path, chemin
d’accés)
2- utiliser la commande xlsread pour lire le fichier (cf exemple)
3- sélectionner les colonnes et lignes que l’on souhaite exploiter (par les
méthodes de sélections utilisées dans les matrices)
4- au besoin, utiliser les outils connus/ commandes pour tracer :
17
-des courbes ;
-des histogrammes
-faire des calculs sur les variables
-etc.
Autres commandes : Load
Solution:
On écrit
p1=[1 −10 35 −50 24] % Spécification des coefficients de p1(x)
p1 =
1 -10 35 -50 24
roots_ p1=roots(p1) % donne les solutions de p1(x)
roots_p1 =
4.0000
3.0000
2.0000
1.0000
18
p2=[1 −7 0 16 25 52]
p2 =
1 -7 0 16 25 52
roots_ p2=roots(p2)
roots_ p2 =
6.5014
2.7428
-1.5711
-0.3366 + 1.3202i
-0.3366 - 1.3202i
Le résultat indique qu’il ya trois racines réelles et deux racines complexes.
2. Construction d’un polynôme à partir de ses racines
La fonction poly(r)
r3=[1 2 3 4] % représentent les racines d’un polynôme
r3 =
1234
poly_r3=poly(r3) % on retrouve les coefficient du polynôme
poly_r3 =
1 -10 35 -50 24
On voit qu’on a le polynôme P1(x) de l’exemple1
Exo : retrouver le polynôme dont les racines sont : –1, –2, –3, 4 + j5, et 4 – j5
Solution:
19
Solution :
p1p2 =
2 -6 -8 34 18 -24 -74 -88 78 166 174 108
Solution:
p3=[1 0 −3 0 5 7 9]; p4=[2 −8 0 0 4 10 12]; [q,r]=deconv(p3,p4)
q=
0.5000
r=
0 4 -3 0 3 2 3
5. Dérivation de polynôme
Solution :
p5=[2 0 8 0 4 10 12];
der_p5=polyder(p5)
der_p5 =
12 0 -32 0 8 10
Age 20 25 30 35 40 45 50 55 60 65 70
revenus
150 146 142 139 135 131 127 124 120 116 112
21
age=[20,25,30,35,40,45,50,55,60,65,70,75];
%une progression par pas de 5,on aurais pu ecrire age=20:5:75;
revenus=[20,22,80,85,180,190,250,275,55,50,35,30];
%plot tracer une courbe
plot(age,revenus, ’*’)
title ('evolution revenus en fonction de age')
% axes des abscisse, xlabel et ylabe axes des ordonnées
ylabel ('revenu')
xlabel('age')
x=20:5:70
y=[150 146 142 139 135 131 127 124 120 116 112]
xi=linspace(20,70,250);
yi=polyval(a1,xi);
hold on
plot(xi,yi)
axis(v)
xlabel('Age (années)')
ylabel('pulsions cardiaque')
3-interpréter le résultat
Exercice 2 :
X = [ 10:.1:100];
22
plot( X , Gauss,'r')
exercice 3 : Compléter ce code pour tracer une gaussienne d’une autre façon.
clear
%n = input('Enter the number of values to be generated ');
mu = input('Enter the population mean ');
sigsq = input('Enter the population variance ');
sigma = sqrt(sigsq);
X = [ 10:.1:100]
Gauss = exp( -(X - mu) .*(X - mu) / (2*sigma^2) ) / (sqrt(2*pi) * sigma);
plot( X , Gauss,'r')
ex1: suite:
x = linspace(0 :1 :10);
y = sin(x);
plot(x,y)
y2 = 2*sin(x);
hold on
axis manual
plot(x,y2)
hold off
Ex2:
X=0:0.05:1;
Y1=X;
Y2=X.^2;
Y3=X.^3;
Y4=X.^4;
grid on
xlabel('x');
>> x = 0:0.1:10;
y1 = sin(x);
y2 = sin(2*x);
y3 = sin(4*x);
y4 = sin(8*x);
subplot(2,2,1);
plot(x,y1);
subplot(2,2,2);
plot(x,y2);
subplot(2,2,3)
plot(x,y3, '+');
subplot(2,2,4)
plot(x,y4);
EX4 :Tracez a l’aide de matlab les lignes de niveau de la fonction f(x, y) = (1 - x)2 + 100(y -
x2)2 sur [-2, 2]