Vous êtes sur la page 1sur 82

Initiation MATLAB et SIMULINK

Pr. : E. EL GUARMAH
1
Matlab – Mise en pratique
Présentation de Matlab

Logiciel développé en Fortran et C++ pour le calcul numérique


(Unix/Linux, Windows).

Calcul matriciel rapide.

Fonctions de haut niveau prédéfinies : résolution de systèmes


linéaires, EDO, ...

Librairie graphique intégrée.

Langage de programmation, graphisme évolué

Boites à outils : traitement du signal, traitement d’image, stats.

2
Matlab– Mise en pratique
Premiers pas

Il existe deux modes de fonctionnement :

 mode interactif : MATLAB exécute les instructions au fur et à mesure


qu'elles sont données par l'usager.
mode exécutif: MATLAB exécute ligne par ligne un "fichier M" (programme en
langage MATLAB).

Fenêtre Commande: Dans cette fenêtre, l'usager donne les instructions et


MATLAB retourne les résultats.

Fenêtres Graphiques: MATLAB trace les graphiques dans ces fenêtres.

Fichiers M: Ce sont des programmes en langage MATLAB (écrits par l'usager).

3
Matlab– Mise en pratique
Syntaxe

% ceci est un commentaire

variable = expression
expression est évaluée, affectée à variable et affichée

expression
expression est évaluée, affectée à ans et affichée

variable = expression;
expression est évaluée, affectée à variable et n’est pas affichée

Les majuscules sont distinctes des minuscules

4
Matlab– Mise en pratique
Manipulation de matrices

A = [1 2 3; 4 5 6] donne
A=
! 1. 2. 3. !
! 4. 5. 6. !

b = [1 2 3]
b=
! 1. 2. 3. !

b = [1 2 3]'
b=
! 1. !
! 2. !
! 3. !
5
Matlab– Mise en pratique
Matrices particulières

zeros(m,n) matrice nulle de taille m, n

ones(m,n) matrice de taille m, n dont les coefficients valent


1

eye(m,n) Matrice identité de taille min(m,n) complétée par


des zéros

6
Matlab– Mise en pratique
La fonction size

size(A) nombre de lignes et de colonnes

7
Matlab– Mise en pratique
Opérations matricielles

+ - addition soustraction

* ^ multiplication puissance (matricielles)

.* .^ multiplication puissance terme à terme

A\b solution de A*x =b


b\A solution de x*A =b

./ division terme à terme

8
Matlab– Mise en pratique
Types de données

Certaines constantes sont prédéfinies

pi 3,1415927

i
1

9
Matlab– Mise en pratique
Constructions des matrices

vecteurs Matrices
x:y nombres de x à y par pas de 1 A(i,j) coefficient d’ordre i, j de A

A(i1:i2, :) lignes i1 à i2 de A
x:p:y nombres de x à y par pas de p

A(i1:i2, :) = [ ] supprimer les lignes i1 à i2 de A


linspace(x,y,n) n nbres entre x et y

A(:, j1:j2) = [ ] supprimer les colonnes j1 à j2 de A


V(i) i-ème coordonnée de V
diag(A) coefficients diagonaux de A
V(i1:i2) coordonnées i1 à i2 de V

V(i1:i2)=[ ] supprimer les coordonnées i1 à i2 de V

10
Matlab – Mise en pratique
i=0:2:12 (vecteur prenant des valeurs de 0 a 12 avec un pas de 2)
i=
! 0. 2. 4. 6. 8. 10. 12. !

Si l'incrément vaut 1 on peut l'omettre : i=0:8


i=
! 0. 1. 2. 3. 4. 5. 6. 7. 8. !

linspace(0,1,6)
ans =
! 0. 0.2 0.4 0.6 0.8 1. !

11
Matlab – Mise en pratique
Extraction de termes

 A(2,3)

 A(3,:) la troisième ligne

 A(2:4,3:4) sous-matrice allant de la 2ème la 4ème ligne et de la


3ème la 4ème colonne

 A(v,w) ou v et w sont deux vecteurs, extrait les termes


correspondants

12
Matlab– Mise en pratique
Commandes principales
Pour for x= vecteur
instruction;
end
Tant que while booleen, instruction; end

Si if booleen
instruction;
end
Sinon else instruction; end

Sinon si else if booleen


instruction;
end
Selon select x case………… then end

13
Matlab– Mise en pratique
Les boucles

La boucle for (itère sur les éléments d'un vecteur ligne)

for i=1:4
x = 2^i
end

La boucle while

x=3
while (x > 1)
x=x/2
end

14
Matlab– Mise en pratique
BOUCLES ET INSTRUCTIONS
CONDITIONNELLES

10/02/2020
x=16;
if (x>0) then
y=-x

Matlab en pratique
else
y=x
end

Résultat : y = -16

15

15
Matlab– Mise en pratique
Instructions conditionnelles

Les opérateurs de comparaison

==
<
<=
>=

~= (différen t de)

Les opérateurs logiques

& et
| ou
~ non

16
Matlab– Mise en pratique
DÉFINITION DE FONCTIONS AVEC MATLAB
• function
[arguments_sortie]=nom_de_la_fonction(arguments_entrée)
<instructions>

Matlab en pratique
• function [y1,y2,y3] = nomfonction(x1,x2,x3,x4)
y1 = x1+x2
y2 = x1*x3
y3 = x1+x2+x3+x4
%les xi sont les arguments d'entrée et les yj les arguments de sortie

• Appel : [a,b,c] = nomfonction(1,-1,1.5,4)

17
Matlab– Mise en pratique
Les graphiques

Les courbes dans le plan

x=-%pi:.1:%pi; ( ou x=linspace(-%pi,%pi,100) )
plot(x,sin(x))

18
Matlab– Mise en pratique
LES GRAPHIQUES
o Les courbes dans le plan
x=-pi:.1:pi; ( ou x=linspace(-%pi,%pi,100) )

10/02/2020
plot(x,sin(x))

Matlab en pratique
plot peut également prendre un certain nombre
d'options de style

o Les surfaces
x=linspace(0,2*%pi,31);
z=cos(x)'*cos(x);
plot3(x,x,z)

19

19
Matlab– Mise en pratique
LES GRAPHIQUES 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.
- Diviser la fenêtre en deux parties (2 x 1)

subplot(2,1,1)

subplot(2,1, 2)

- Diviser la fenêtre en deux parties (1 x 2)

subplot(1,2,1) subplot(1,2,2)

20
Matlab– Mise en pratique
LES GRAPHIQUES 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.
- Diviser la fenêtre en quatre parties (2 x 2)

subplot(2,2,1) subplot (2,2,2)

subplot(2,2, 3) subplot (2,2,4)

- Diviser la fenêtre en quatre parties (4 x 1)


subplot (4,1,1)
subplot (4,1,2)
subplot (4,1,3)
subplot (4,1,4)
21
Matlab– Mise en pratique
COMMUNICATION AVEC
L'USAGER
On peut afficher un message, une valeur à l'écran
avec l’instruction disp :

disp('Ceci est un test') Afficher "Ceci est un test"


sur l'écran

On peut entrer une valeur avec l’instruction input :

x = input('Valeur de x = ') Afficher sur l'écran


"Valeur de x = " et attendre qu'un nombre soit tapé
sur le clavier

22
Matlab– Mise en pratique
Travaux Pratiques
Environnement MATLAB et bases de programmation
• Définir le vecteur ligne age de 1 à 25 par pas de 1.

• Calculer la somme des éléments du vecteur age par une boucle for et faire la
moyenne.

• Refaire la même chose avec le transposé de age c’est-à-dire un vecteur


colonne. Commentaire sur le résultat.

• Mettre age dans une matrice (5,5).

• Définir les variables m = 10, l = 1.3 et la matrice :

1 2 
 
A  3 4 
0 m / l * cos(2 / 3) 

23
Environnement MATLAB et bases de
programmation
• Définir la matrice de rotation

 cos( ) sin( )  
B  pour  
  sin( ) cos( )  4
• Faire le produit A par la matrice B.
• Ajouter 1 aux éléments de la matrice A. Calculer la matrice B + I (I est
la matrice identité).
• Évaluer eye(B)/B et comparer avec inv(B).
• Faire A. A, A./A, sin(A), max(A).
• Résoudre le système linéaire Bx=(1 1)’
• Dessiner la courbe de la fonction y(x) = x sin(x) sur l’intervalle [0, 10] avec un
pas de 0.05.
• Superposer les courbes y(x) = x et y(x) = x sin(x) en utilisant un ou deux appels
successifs `a plot.

24
TP 1 : Equations différentielles
• Résolution de l’équation différentielle :

y’(t)= dy/dt=y2(t) – y(t) sin(t) + cos(t),


y(0)=0

25
Équation de la chaleur
• Problèmes paraboliques : Position du problème
On considère une barre métallique homogène de longueur L en contact
à ses deux extrémités avec deux sources thermiques de même
température (U=0)

x
L

On se donne la température initiale de la barre et on se propose de


déterminer son évolution au cours du temps.
On cherche donc U(x,t) pour (0 ≤ x ≤ L, t ≥0 ) vérifiant l’équation de la
chaleur (P) avec les conditions aux limites et condition initiale.

26
 U  U 2

  2 (0  x  L ; t  0)
 t  x
( P)  U (0, t )  U ( L, t )  t  0
U ( x,0)  U ( x)  0  x  L
 0

On se propos de résoudre ce problème par les différents
schémas de discrétisation, (explicite et implicite), dans un
intervalle de temps [0, T]

27
Méthode des différences finies

1. Aperçu sur les schéma à deux niveaux.

2. Discrétisation par le schéma explicite.

3. Discrétisation par le schéma implicite.

4. Consistance et la Stabilité des deux schémas.

28
Méthodes des différences finies :
Aperçu sur les schémas à deux niveaux
• Considérons une discrétisation en temps de pas k et une
discrétisation en espace de pas h

M nj1 M nj 1 M nj11
(n+1)k
t

M nj1 M nj M nj1
nk

(j-1)h jh (j+1)h
Δx = h
Δt = m
x
29
Pour la dérivée en temps

n 1
U U U n

( jh, nk ) 
j j

t k

30
Schéma explicite
• Ce schéma 2consiste à approcher la dérivée
seconde  U2 au niveau (n k)
x

U
2
U  2U  Un
j 1
n n
j 1

j
( jh , nk )
x 2
h 2

présente l’avantage d’être moins onéreux au calcul


mais il reste limité pour des raisons de stabilité
31
Schéma implicite
• Ce schéma consiste à approcher la dérivée seconde
 2U au niveau (n+1)k
x
2

n 1 n 1 n 1
U
2
U j 1  2U U j 1

j
( jh , nk )
x 2
h 2

il s’agit de résoudre un système linéaire


il présente l’avantage d’être inconditionnellement stable
32
• L=1 • L=1

• Conditions initiales : • Conditions initiales :


U(x,0) = sin(π x) U(x,0) = 300

• Conditions aux limites : • Conditions aux limites :

U(0,t) = 0 U(0,t) = 350


U(L,t) = 0 U(L,t) = 440

33
34

34
Matlab et les images

10/02/2020
• Pour Matlab, une image de taille (m,n) est

Matlab en pratique
une matrice X de taille (m,n), et la valeur de
X(i,j) correspond à la valeur du niveau de gris
de l’image au pixel (i,j)

• Matlab est capable de lire a peu près tous les


formats standards d’images

35

35
Matlab et les images

10/02/2020
• Pour charger une image :

Matlab en pratique
Si l’image se trouve dans le toolbox de
matlab on utilise la commande : load
nom_image

Sinon on utilise la commande :


imread(‘emplacement_image.nom_image’)
36

36
Exemple
% chargement d’une image
load gatlin2
%l’image est chargée dans la variable X
%visualisation
imagesc(X)
%affichage au niveau de gris
colormap gray

37
38
Bruitage d’une image
function out=bruitage(I,s);
[m,n]=size(I);
J=zeros(m,n);
J=s*randn(m,n);
out=I+J;
figure(2)
imagesc(out)
colormap gray;
39
40
41
SNR
Parmi les critères quantitatifs les plus courants pour évaluer les
performances d'un algorithme de débruitage, nous avons retenu
le rapport signal à bruit (Signal to Noise Ration, SNR), il s'exprime
en décibels par le rapport entre l'image de référence I1 et l'image I2
après l'analyse :

  2 ( I1 ) 
SNR  10 log 10  2 
 ( I1  I 2 ) 

où  est la variance

42
Débruitage d’images
Filtres basées sur l’EDP de la chaleur

• On s’intéresse aux filtrages par les EDP. Les premiers tests


seront faits par l’équation de la chaleur :

U
 U ( t , x , y )  0 dans x(0, T )
t
U (0, x , y )  U 0 ( x , y ) dans 

43
Schéma explicite
• On procède par la discrétisation du premier terme :

n 1
U U i , j  U i , j
n

t k

Où k est le pas de discrétisation suivant le temps.


• Et le 2ème terme, en considérant le même pas de discrétisation
dans l’espace, par :

n
U i 1, j  U i 1, j
n
 4U i , j
n
 U i , j  1  U i , j 1
n n
U ( t n , x i , y j )  2
h
44
Schéma explicite
• En remplaçant dans l’EDP de la chaleur on aura :

U in, j 1  U in, j U in1, j  U in1, j  4U in, j  U in, j 1  U in, j 1


 2
0
k h
Enfin

U in, j 1 n 

k
 Ui, j 1  4 2
 k
 
h  h 2
U n

i 1, j  U n
i 1, j  U n
i , j 1  U n
i , j 1 

45
Programme sous Matlab
function sol=eqch(U,k,h,d,X)
[m,n]=size(U);
a=????;
b= ????;
for l=1:d
for i=2:m-1
for j=2:n-1
???????
??????
end;
end;
B=U;
end;
sol=B;
figure(3)
imagesc(?????);
colormap gray;
46
47
Amélioration

U
 CU ( t , x , y )  0 dans x(0, T )
t
U (0, x , y )  U 0 ( x , y ) dans 

C varie de 0.1 à 1

48
Schéma de discrétisation

U in, j 1  U in, j U in1, j  U in1, j  4U in, j  U in, j 1  U in, j 1


C 2
0
k h
Enfin

U in, j 1

 U in, j  1  4C

k  Ck n

h  h
2
 2
U 
i 1, j  U n
i 1, j  U n
i , j 1  U n
i , j 1 

49
Peronna-Malik
Pour améliorer les résultats obtenus par l’EDP de la chaleur, Peronna
et Malik ont proposé de modifier l’équation en y intégrant le processus
de détection des bords

 U
 t  div C  U U  dans x( 0, T )

 U
(P1)   0 sur x(0, T)
  N
U ( 0, x )  U 0 ( x ) dans 


Où C est une fonction croissante de R+ dans R+

Si C=1 on retrouve l’équation de la chaleur.

50
Schéma numérique
• Sur le même principe que l’EDP de la chaleur, écrire le schéma
numérique pour (P1).
• Tester le nouvel algorithme avec les fonctions
1
C (t ) 
1 t  2

et
C (t )  1
1  t
  2

• On rappelle que si l’opérateur  gradient est discrétisé par


différence finie à droite, alors une discrétisation possible de la
divergence est donnée par :
div( p)i , j  pi1, j  pi11, j  pi2, j  pi2, j 1

avec p  ( p1 , p 2 )
51
Débruitage d’images
Filtres basées sur l’EDP de Perona-Malik
• Dans ce qui suit on s’intéresse au filtrage
utilisant l’EDP de Perona-Malik s’écrit sous la
forme :
U
t
  
 div C U U dans x(0, T )
2

U (0, x )  U 0 ( x ) dans 

log e  t 
C1 ( t ) 
1  t 
1  t 
C 2 (t ) 
 t 
C 3 (t )  1
1  t 
52
Sur un modèle non-linéaire pour le
débruitage de l'image
  
  
U  1  
 div    U   0 dans x(0, T )
t   U 
2  
  1     
   
 
  
U ( x ,0)  U 0 ( x ) dans 
U ( x , t )  0 dans x(0, T )

 et  sont deux constantes strictemen t positives

53
Simulink
Simulink, un environnement puissant de modélisation par
schémas-blocs et de simulation de systèmes linéaires ou non,
continus ou discrets.

Des bibliothèques de blocs Simulink spécialisés (BlockSets)


dans divers domaines.

54
Simulink
Démarrage et exécution de Simulink

• Le Toolbox Simulink est une fonction lancée depuis Matlab qui


donne accès à une description graphique des problèmes avec
application au traitement du signal, l’automatique classique, la
logique floue...
• Pour démarrer Simulink, frapper dans la fenêtre de commande :
• >> simulink
• ou bien appuyer sur le bouton de la fenêtre principale de
Matlab.
• Dès le lancement, Simulink propose dans une fenêtre la
bibliothèque des structures prédéfinies usuellement rencontrées,
ainsi que les objets graphiques définis dans les Toolbox.

55
Démarrage et exécution de Simulink
• Tapez la commande suivante à l'invite
de commande Matlab
>> simulink
• La bibliothèque de Simulink doit
s'afficher

• Cliquez sur « Fichier-Nouveau » pour


créer un nouvel espace de travail, et
«glisser-déposer» des objets de la
bibliothèque dans l'espace.

• La sélection de simulation de
démarrage à partir du menu déroulant
va lancer la simulation dynamique.
Cliquez sur les blocs pour afficher les
données ou modifier les paramètres
d'exécution
56
Signaux et Systèmes dans Simulink
• Deux grands ensembles de bibliothèques
pour la construction simulations simples
dans Simulink :
• Signaus: Sources and Sinks
• Systèmes: Continuous and Discrete

57
Exemple de Simulink de base
• Copier "sine wave" source et "scope"
sink sur ​un nouvel espace de travail
Simulink en se connectant.
• Exécuter la simulation :
Simulation - Start

58
• SIMULINK® permet de modéliser, simuler et analyser les systèmes
dynamiques. Il supporte les systèmes linéaires et non-linéaires,
modélisé en temps continus, discrets ou hybrides.

• Il est largement utilisé dans le monde, dans différents domaines tels


que :

Aérospatial et Défense

Automobile

Communications

Electronique et Traitement du signal

Instrumentation médicale…

59
SIMULINK : LIBRAIRIES
L’outil principal de Simulink
est l’explorateur de librairies.
Il comprend tout ce qui est
nécessaire sous Simulink :
Les blocs regroupés en
librairies par caractéristiques
communes
La barre d’outils pour la
gestion des modèles
Une aide très complète

60
Librairie « Commonly
used ». Contient les
blocs les plus fréquents :
Constante
Gain
Sommateur
Intégrateur
Mux

61
Librairie « Sinks ».
Contient les blocs de
sorties, en particulier :
Visualisation graphique :
Scope, Floating Scope,
Display
Enregistrement des
données : To File, To
Workspace
Création de ports de
sortie : Out1

62
Librairie « Sources ».
Contient les blocs d’entrées,
en particulier :
Génération de signaux :
Step, Sine Wave, Ramp,
Pulse Generator, …
Chargement de données :
From File, From Workspace
Création de ports d’entrée :
In1

63
SIMULINK : TRAVAIL DIRIGÉ
Exercice de prise en main de Simulink :
Visualisation simultanée d’une sinusoïde et de son intégrale

64
1 – Création d’un nouveau
modèle :
Cliquez sur l’icône
dans la barre d’outils Matlab
Cliquez sur l’icône
Pour créer un schéma-bloc.
Pensez à enregistrer votre
modèle dans votre espace
de travail

65
2 – Ajout des blocs :
Ajout par « glisser / déposer » (drag
and drop) de la fenêtre de librairie
vers la fenêtre du modèle :
Librairie « commonly used » :
Intégrateur, Mux
Librairie « Sinks » :
Scope
Librairie « Sources » :
Sine Wave

66
3 – Organisation des blocs :
Pour déplacer un bloc vous
pouvez :
Cliquer et glisser le bloc
Sélectionner le bloc, et le
déplacer au moyen des
flèches du clavier.

Lorsque vous déplacez un bloc, si l’une de ses entrée/sortie


coïncide avec une sortie/entrée d’un autre bloc, un trait bleu apparait.
Cela vous permet d’aligner convenablement les blocs.

67
4 – Connection des blocs :
Pour connecter une entrée à une sortie
vous devez :
Cliquer sur le port (une croix apparait)
Maintenir enfoncé le bouton. En
Arrivant sur l’autre port, une double
croix apparait.
Relacher le bouton de la souris
Connections à réaliser :

68
5 – Création d’un branchement :
Pour brancher une entrée à un
signal existant vous devez :
Cliquer sur le port (une croix
apparait)
Maintenir enfoncé le bouton. En
Arrivant sur le signal, une double
croix apparait.
Relacher le bouton de la souris

69
6 – Simulation :
Cliquer sur l’icône pour
lancer la simulation

Double-cliquer sur le scope


pour visualiser le résultat

Cliquer sur l’icône pour


adapter la fenêtre à la taille

70
SIMULINK : SIMULATION
Paramètres de simulation :
Menu « Simulation » → « Configuration Parameters »

71
Intervalle de simulation :

Temps de début : généralement laissé à 0s.


Temps de fin : dépend des caractéristiques temporelles des
signaux à visualiser (par défaut = 10s). Pour une simulation en
continu, mettre la valeur à « inf ».

72
Solveur : résolution numérique par pas temporels
Zoom sur une région :
la résolution numérique
se fait à intervalles de
temps variables ou fixes.
la solution globale est
obtenue par interpolation
linéaire entre ces différents points (segments de droites).

73
Types de solveurs : « variable-step »

74
Types de solveurs : «fixed-step »

75
Différences entre pas fixe et pas variable :
« Variable-step » :

+ : précision (adaptation du pas aux variations du signal)


- : lenteur (processus itératif pour calcul du pas variable)
« Fixed-step » :

+ : rapidité (calcul direct)


- : précision (dépend des variations du signal)

76
En cas de « mauvaise » simulation :
Préférer au maximum un « Variable-step » (par défaut). Mettre une
valeur de « Max Step Size » suffisamment petite.
Si calcul de simulation trop long, préférer alors un « Fixed-step »,
mettre une valeur suffisamment petite pour le pas.
A savoir :
Si vous avez des non-linéarités dans votre modèle, choisir un
solveur « stiff » (odes).
Le « Fixed-step » est le seul qui soit réalisable physiquement
(période d’échantillonnage fixe) et donc le seul qui permet de la
génération de code ou l’implémentation dans un composant.

77
Analyse et contrôle du signal temporel
TP0
Sommaire du TP0
1) Introduction à Matlab
2) Exercices
3) Transformée de Fourier discrète avec Matlab :
commande fft
a) Impulsion en 0 et Fourier discrète et inverse
b) Impulsion en a
c) Fonction Porte
c1) Echantillonnage et TFD
c2) Influence de la fréquence d’échantillonnage et de la durée de l’échantillon

4) Sinusoïde et spectre de raies

78
Fin

79
• Pour ouvrir une librairie de blocs de modélisation, il suffit de double
cliquer dessus ou d'effectuer un "clic droit > open the … library".
• Parmi les librairies les plus courantes, citons :

 Simulink>Sources: Librairie de sources de signaux (ex:


générateur)

 Simulink>Sinks: Librairie de blocs d'affichage (ex: oscilloscope)

 Simulink>Discrete: Librairie de blocs de traitement numérique

 Simulink>Continuous: Librairie de blocs de traitement analogique

 Simulink>Math operations: Librairie d'opérateurs mathématiques


(produit, somme, minimum, etc.)

80
Simulation avec Simulink
• Avant de lancer une simulation, on doit choisir les paramètres
appropriés au modèle du système. Pour cela, sélectionner Menu
Simulation>configuration parameters.

81
82

Vous aimerez peut-être aussi