Académique Documents
Professionnel Documents
Culture Documents
Chapitre I
Introduction à Matlab
I.1. Généralités
a) historique :
MATLAB est une abréviation de Matrix LABoratory. C'est un logiciel de calcul matriciel (1985
par C.Moler), considéré comme un environnement puissant, complet et facile à utiliser destiné
au calcul scientifique. Il apporte aux ingénieurs, chercheurs et à tout scientifique un système
interactif intégrant calcul numérique et visualisation. C'est un environnement performant,
ouvert et programmable qui permet de remarquables gains de productivité et de créativité.
b) Particularité:
Plus besoin de programmer des boucles pour modifier les éléments d'une matrice un à un, on
peut traiter la matrice comme une simple variable. Il permet un travail interactif on mode
commande et un travail exécutif en mode programmation.
c) Schéma synoptique :
Fenêtre Graphique
Interpréteur
Robust control
System Identification Toolbox
Toolbox
Simulink Interface
1
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
a) Mode interactif :
ZOOM
Fenêtre de
Commande
>> L'invite de matlab indiquant que l'interpréteur est prêt à recevoir une commande
x= Commande
2
Affichage
b) Mode exécutif :
2
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
· Sauvegarde :
- Les noms des fichiers programmes se terminent par l'extension : m
Pour lancer l'exécution d'un programme il faut se mettre toujours dans même répertoire ou se
trouve se programme.
- Les noms des fichiers de données se terminent par l'extension : mat
Les fichiers mat-files sont des fichiers permettant sous-matlab de sauvegarder des données, par
exemple on réalise une simulation, dont on veut garder les résultats, on auvegarde alors les
données dans un fichier :
>> a=5
a=
Récupération des données
>>
Les variables et les données (data) crées lors de la programmation résident dans ce qu’en
appelle : espace de travail : Wokspace. Dans cette fenêtre il est possible de supprimer ou de
modifier le nom, la taille et le contenu de l’une ou de l’autre des variables.
Dans Matlab l’accès à l’espace de travail s’effectue à partie du menu View : Workspace.
Il permet également la suppression ou la modification des variables. Il offre aussi la possibilité
de retrouver toutes les commandes taper antérieurement en mode interactif dans la fenêtre ;
Command History (l’historique des commandes), avec la date de la session correspondante.
3
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
L’espace de travail
L’historique des
commandes
I.3.1. Opérateurs
a) Opérations relationnels
4
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
une expression relationnelle renvoie 1 si elle est vérifiée (vraie ) et 0 autrement (fausse).
S'ils sont appliquées à une matrice, ces opérations renvoient une matrices de mêmes
dimension car ils s'appliquent à chacun de ces éléments.
b) Opérations mathématiques :
· * : Multilicateur
· + : sommateur
· - : soustracteur
· /: diviseur
c) Opérations logiques
Il existe 3 opérateurs logiques qui peuvent être utilisés pour gérer les résultats binaires (0 ou
1) renvoyés par des expressions relationnelles.
ê: ou logique (OR)
~ : opérateur non ( Not)
& : opérateur ET (And)
d) Caractères spécifiques
I.3.2. Variables
a) vecteur
- définition: Les éléments d'un vecteur sont entrées l'un après l'autre séparés par des
blancs ou des virgules, l 'ensemble étant encadré par des crochets.
>> x=[1 2 3 4 5 6 7]
x=
1 2 3 4 5 6 7
ou autrement:
x =[1:7]; % l 'incrément est par défaut égal à 1
5
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
>> length(x)
La longueur du vecteur
ans =
>> x=[2 8 4 3 5]
x=
2 8 4 3 5
>> sum(x)
ans =
22 Pour demander la syntaxe d'une
fonction On tape :
help nom_fonction
Example: If X = [0 1 2
3 4 5]
>> diff(x)
ans =
6 -4 -1 2
La différence se fait de droite vers la gauche et on obtient un élément en moins.
6
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
>> prod(x)
ans =
960
>> help prod
b) Matrice
b-1/ définition : le tableau à 2 dimensions (matrice) est l'élément de base de Matlab , un
vecteur n'est autre qu'une matrice à une ligne ou à une colonne. Un scalaire est une matrice
à une ligne et une colonne.
a=
1 5 7
3 8 1
On peut aussi entrer la première ligne puis on effectue un retour chariot avant de saisir la
deuxième :
7
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
>> a=[1 5 7
3 8 1]
a=
1 5 7
3 8 1
a + b ; % addition
a - b ; % soustraction
a*b ; % multiplication
e =inv(a); % e est égal à l'inverse de a
c = a' ; % la matrice C est la transposée de a
c = a/b ; % a*inv(b)
c = a\b ; % inv(a)*b
% les opérations éléments par éléments des vecteurs et des matrices sont effectuées on ajoutant
un point avant les opérateurs : * / \ ^
a=
1 2
3 4
b=
1 4
4 1
>> a.*b
ans =
1 8
12 4
8
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
> un = ones(3,2)
un =
1 1
1 1
1 1
identite =
1 0 0
0 1 0
0 0 1
>> zero=zeros(2,3)
zero =
0 0 0
0 0 0
Un affichage d'une matrice est possible dans une fenêtre graphique avec la commande:
pltmat.
9
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
par élément. Le résultat de la comparaison de deux éléments est 1 lorsque la condition est
vérifiée et 0 dans le cas contraire. Considérons les deux matrices A et B :
3 6
0 7
>> A<B
ans =
1 1
0 1
La commande rot90 réalise une rotation de 90° d'un vecteur ou d'une matrice
1 2 3
4 5 6
>> x_rot=rot90(x)
x_rot =
3 6
2 5
1 4
x=
1 2 3
4 5 6
>> mnx=min(min(x))
10
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
mnx =
1
>> mxx=max(max(x))
mxx =
6
> somx=sum(sum(x))
somx =
21
b-10/ la concaténation
c’est une opération qui permet d’adjoindre un tableau B, éventuellement réduit à un vecteur (
ligne ou colonne ) à un tableau A pour former un nouveau tableau de taille plus grande. Les
dimensions de B et de A doivent être compatibles.
Exemple
>> A=rand(3,5)
A=
Sous_taba =
11
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
Sous_taba =
0.9355 0.8132
0.9169 0.0099
- La fonction log appliquée à une matrice calcule le logarithme népérien de chacun de ces
éléments
Log(x)
- la fonction exp appliquée à une matrice calcule l'exponentielle élément par élément.
exp(x)
- les valeurs propres d'une matrice sont calculées par la fonction : eig
eig(x)
MATLAB accepte les nombres complexes sous leur forme algébrique a+i*b ou
exponentielle rho*exp(j*theta). Les symboles i et j représentent le nombre imaginaire pur
vérifiant: i^2 = j^2 = -1. Pour l'affichage des nombres complexes, MATLAB utilise
toujours le symbole i.
>> z = 1+i
z=
1.0000 + 1.0000i
>> z= complex(2,3)
z=
2.0000 + 3.0000i
12
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
result.
>> z = sqrt(2)*exp(i*pi/4)
z=
1.0000 + 1.0000i
1/ définition :
Outre ces capacités de calcul numérique et de visualisation, MATLAB possède des fonctions
de traitement de chaînes de caractères. Une chaîne de caractère est traitée, tout comme un
polynôme sous la forme d'un vecteur dont chaque élément est un caractère de la chaîne, à La
différence des vecteurs la représentation d'une chaîne de caractère est que le texte est encadré
d'apostrophe et non de crochets.
Exemple :
chaine =
matlab et simulink
>>
La longueur d'une chaîne est donnée comme pour les vecteurs, par la commande length:
>> length(chaine)
ans =
18
>>
Comme matlab est un langage matricielle, certaines fonctions propres aux vecteurs sont
applicables aux chaînes de caractères, telle que la transposition.
>> chaine1=chaine(1:6)'
13
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
chaine1 =
m
a
t
l
a
b
Une chaîne de caractère étant comparable à un vecteur, ces dimensions peuvent être obtenues
par la commande size:
>> size(chaine1)
ans =
6 1
>>
l'affichage d'une chaîne se fait, comme pour les vecteurs ou matrices à l'aide de la commande
disp:
>> disp(chaine1')
matlab
>>
Un nombre réel ou entier peut être converti en chaîne de caractère en utilisant la fonction
num2str :
>> num2str(536.23)
ans =
536.23
>>
on peut connaître si le type d'un résultat est une chaîne de caractère en utilisant la commande :
isstr:
>> isstr(ans)
ans =
14
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
>>
La fonction isstr retourne 1 si l'argument est une chaîne de caractère et 0 si non. La commande
num2str est très utilisée lorsqu'on désire afficher un résultat numérique de type : ' le résultat
de calcul est 25 '.
Exemple :
>> x=randn(5);
>> std_x=std(x(:));
>> disp(['l''ecart type est ' num2str(std_x)])
l'ecart type est 1.0473
>>
ans =
[1 2;3 4]
>> length(ans)
ans =
9
----------------------------------------------------------------------------------------------------------------
Dans ce cas, tout est considéré comme un vecteur dont le point virgule en est un élément.
Un nombre donné sous forme d'une chaîne de caractère peut redevenir en format numérique par
la commande str2num :
>> str2num('20')+5
ans =
25
>>
ans =
>> lower(ans)
15
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
ans =
>> ok=strcmp('MATLAB','MaTLAB')
ok =
· Pour savoir si une expression quelconque est une chaîne de caractère alphabétique, on
peut utiliser la commande isletter :
chaine =
matlab 6.0
>> isletter(chaine)
ans =
1 1 1 1 1 1 0 0 0 0
>>
ans =
0 0 0 1 1 0 0 0 1
>>
· Recherche d'une chaîne dans une autre avec la commande findstr :
>> ok=findstr('toolbox','o')
ok =
2 3 6
La fonction retourne les positions de la lettre 'o' dans la chaîne 'toolbox'
>> ok=findstr('toolbox','box')
ok =
16
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
-La commande strtok recherche le premier mot chaîne dans une autre et retourne le reste :
chaine =
>> [premier_mot,rest]=strtok(chaine)
premier_mot =
ceci
rest =
est un test
--------------------------------------------------------------------------------------------------
Comme pour tout autre langage évolué, les variables sont des chaînes alphanumériques dont le
premier caractère doit être alphabétique. toute variable est vue par matlab comme une matrice
et ne se déclare donc pas à l'avance comme pour le langage C ou pascal.
a/ Expression mathématique :
On définit une variable en donnant son nom et son expression mathématiques , le nom peut
être en majuscules, en minuscules ou mélange des deux, la seule restriction est qu'il soit
différent d'un mot clé du langage, un nom de variable peut avoir une longueur allant jusqu'à 9
caractères:
a = 1.25;
x = 0:0.25:10;
y = a*x;
z = y.^2;
% expression mathématique
17
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
MATLAB est un outil très puissant et très convivial pour la gestion des graphiques, que ce soit
en deux dimensions ou en trois dimensions. Pour tracer une courbe y = sin(x) par exemple, où
x=0 :50 ; il suffit de faire :
>>x=0:50;y=sin(x);plot(x,y)
Ci-dessous, on présente un petit résumé très succinct concernant le traçage des graphiques et la
manipulation des axes et des échelles :
Exemple 1
18
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
Exemple 2
y1=f(x1)
4
y1
2
0
0 5 10 15 20 25
x1
y2=f(x2)
10
y2
5
0
0 5 10 15 20 25
x2
y3=f(x3)
50
y3
0
0 5 10 15 20 25
x3
19
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
Le logiciel matlab est bâti sur des fonctions (sous-programme),ayant toutes le même modèle,
Comme dans la plupart des langages.
I.5.1. Fonctions
Les fonctions attendent des arguments d'entrée et fournissent en retour des arguments de sortie.
Sous matlab la syntaxe d'appel est la suivante :
avec :
arg_sori = constituent les arguments de sortie, c'est à dire les résultats retournés par la fonction
lorsque celle-ci a fini son exécution;
arg_eni = constituent les arguments d'entrée, c'est à dire les paramètres passés a la fonction
pour qu'elle puisse être exécutée.
Sur ce modèle, voyons la façon de créer ses propres fonctions en langage matlab :
Une fonction est un programme dont la structure est un peut particulière : principalement au
niveau de sa première ligne. En effet, pour q'un programme écrit en matlab soit vu comme une
fonction , il faut que sa première ligne contient la déclaration suivante :
Une fonction est fichier programme dont le nom est celui de la fonction crée suivi de
l'extension .m : nom_fonc.m
20
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
function x=laplinv(num,den,t)
% La fonction laplinv permet d'obtenir l'expression temporelle
% du signal x(t) dont on donne sa transformée de Laplace X(p)
% sous forme d'une fraction N(p)/D(p)
% function x=laplinv(num,den)
% x : valeurs du signal temporel x(t)
% num,den : numérateur et dénominateur de X(p)
% t : intervalle de temps pour les valeurs du signal x(t)
[r,p,k]=residue(num,den);
x=r'*exp(p*t);
% Application de la fonction :
1
% Soit y(p) =
(p + 1)(p + 2)
>> num=1;
>> den=conv([1 1],[1 2]);
>> t=0:0.01:10;
>> x=laplinv(num,den,t);
>> plot(t,x)
>> grid
>> title('signal de transformée X(p)=1/(p+1)(p+2)')
21
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
k=
a) Cas conditionnel
Utilisation :
if expression,
Action 1
else
Action 2
end
Utilisation :
if expression1,
Action 1
22
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
elseif expression2,
Action 2
end
Utilisation :
switch switch_expression,
Case case_expression1
action 1, action2 ,…
Case case_expression2
action11, action12
otherwise,
action n, action nx
end
· For : permet de répéter une séquence d'actions un nombre de fois fixé par
l'utilisateur.
Utilisation :
for variable = deb : pas : fin,
end
Cette séquence est donc exécutée le nombre de fois qu'il faut pour que la variable
fin - deb
atteigne la valeur fin. Ce nombre de fois vaut : +1
pas
· while : permet de répéter une séquence d'actions un nombre de fois
indéterminé mais conditionné par la réalisation d'une occurrence particulière.
Utilisation :
while expression,
action 1, action2 ,…action n
end
I.6. Simulink
Simulink est l'extension graphique de Matlab permettant de représenter les fonctions
mathématiques et les systèmes sous forme de diagramme en blocs, et de simuler le
fonctionnement de ses systèmes.
1/ Pour démarrer simulink
23
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
Cette fenêtre contient des collections de blocs que l'on peut ouvrir en cliquant (double ) dessus.
24
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
* Créer
Pour commencer, dans le menu file, on choisit NEW-MODEL. Une fenêtre de travail
untitled s'ouvrira.
*Enregistrer
Une fois le diagramme terminé, on peut l'enregistrer dans un fichier : dans le menu
file choisir Save as et donner un nom (*.mdl) au fichier .
On sélectionne avec la souris, le symbole > situé sur un composant, On maintient l'appui
sur le bouton et on tire le lien vers le symbole >
25
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
26
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
Chaque composant possède un nom par défaut (transfert fnc) , on peut modifier ce nom :
click sur le nom et on tape le nouveau nom .
Afin de ne pas surcharger le dessin, on peut utiliser 2 composant situés dans la librairie
connections (Routing)qui permettent d'effectuer une transition sans fil. Ces 2 composants
s'appellent GOTO et FROM.
27
Ecole Nationale d'Ingénieurs de Gabès – DGEA Cours Technique de simulation numérique - chapitre I
3/ Simulation
a/ paramétrage
La simulation utilise un certain nombre de paramètres :
Instant de départ ( 0 par défaut)
Instant d'arrêt (20s par exemple)
Algorithme d'intégration (exemple ode 45)
Erreur relative (exemple 10-3)
Erreur absolue ( exemple 10-6)
b/ Lancement de la simulation
Menu simulation Þ Start
Ou l'icône :
Les blocs ToWorkspace de la librairie Sinks permettent de diriger les signaux vers l'espace
de travail de Matlab.
Les blocs From Workspace de la librairie Source permettent de définir des signaux dans
Matlab et les utiliser dans simulink
28