62
Initiation à Matlab ESSTIN - Université de Lorraine Floriane COLLIN Octobre 2013

Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Initiation à Matlab

ESSTIN - Université de Lorraine

Floriane COLLIN

Octobre 2013

Page 2: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Table des matières

Introduction 1

1 Généralités et prise en main 21.1 Démarrer - Quitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Avant de saisir votre première commande . . . . . . . . . . . . . . . . . . . . . . 21.3 Opérations élémentaires +, −, ∗, /, ˆ . . . . . . . . . . . . . . . . . . . . . . . . 3

1.3.1 Calcul sans déclaration de variables . . . . . . . . . . . . . . . . . . . . . 31.3.2 Calcul avec déclaration de variables . . . . . . . . . . . . . . . . . . . . . 41.3.3 Variables prédéfinies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4 Commandes MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4.1 Commande whos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4.2 Commande clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.4.3 Commande help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.5 Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.6 Création d’un fichier-M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.7 Fichier-M et dialogue avec l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . 9

1.7.1 Commande disp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.7.2 Commande input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.8 Application : conversion d’unité . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2 Vecteurs et matrices :applications aux images 112.1 Notion d’image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.1.1 Image binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.1.2 Image en niveau de gris . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.1.3 Image couleur RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.1.4 Lire une image sous MATLAB . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2 Vecteurs et matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.1 Créer un vecteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.2 Créer une matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.3 Accéder à des valeurs dans une matrice . . . . . . . . . . . . . . . . . . . 152.2.4 Transposer une matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.2.5 Concaténation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.2.6 Modifier une valeur dans une matrice . . . . . . . . . . . . . . . . . . . . 192.2.7 Opérations élémentaires +, −, ∗, / . . . . . . . . . . . . . . . . . . . . . 202.2.8 Matrices particulières . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

i

Page 3: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

TABLE DES MATIÈRES

3 Opérateurs logiques, conditions et bouclesapplications au seuillage d’image 253.1 Opérateurs logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.2 Condition if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.3 Boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.3.1 Boucle for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.3.2 Boucle while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.4 Exemple 1 : seuillage d’image . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.5 Exemple 2 : détection de contour . . . . . . . . . . . . . . . . . . . . . . . . . . 283.6 Application : contrôle de conformité d’un produit . . . . . . . . . . . . . . . . . 30

4 GraphiquesApplications à l’analyse de données et à l’analyse fréquentielle 314.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1.1 Importer un ficher de données . . . . . . . . . . . . . . . . . . . . . . . . 314.1.2 Statistiques de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.2 Tracer un graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.3 Titre et labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.4 Axes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.5 Sauvegarder et exporter une figure MATLAB . . . . . . . . . . . . . . . . . . . 34

4.5.1 Sauvegarde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.5.2 Export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4.6 Tracés multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.6.1 Commande hold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.6.2 Commande subplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

4.7 Autres types de graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.7.1 Fonction hist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.7.2 Fonction bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.7.3 Graphique 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5 Résolution de systèmesApplications à l’électricité et à l’hydrodynamique 415.1 Résolution d’un système linéaire sous forme matricielle . . . . . . . . . . . . . . 415.2 Recherche de zéros d’une fonction non linéaire . . . . . . . . . . . . . . . . . . . 42

5.2.1 Racines d’un polynôme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.2.2 Recherche par dichotomie . . . . . . . . . . . . . . . . . . . . . . . . . . 435.2.3 Fonction fzero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

6 Equations différentiellesApplications diverses 466.1 Equation différentielle d’ordre 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 466.2 Equation différentielle d’ordre 2 et suspension d’une voiture . . . . . . . . . . . 486.3 Application : dynamique d’une population . . . . . . . . . . . . . . . . . . . . . 50

7 Application : étude d’un segway 527.1 Description du segway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

7.1.1 Forces en jeu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537.1.2 Alimentation du segway . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

7.2 Calcul de l’énergie électrique nécessaire . . . . . . . . . . . . . . . . . . . . . . . 54

ii

Page 4: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

TABLE DES MATIÈRES

7.3 Calcul de la distance parcourue . . . . . . . . . . . . . . . . . . . . . . . . . . . 557.4 Nombre de batteries et distance parcourue . . . . . . . . . . . . . . . . . . . . . 557.5 Profil du terrain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557.6 Freinage récupératif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

iii

Page 5: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Introduction

Matlab, c’est quoi ?MATLAB, pour MATrix LABoratory, est un logiciel de calcul scientifique, qui permet de traiterdes problèmes numériques complexes (équations différentielles, intégration numérique, résolu-tion de systèmes d’équations, ...), d’exploiter et de visualiser des données en 2D/3D, ..., dansun environnement interactif.Il est couramment utilisé par les scientifiques et les ingénieurs, pour différentes applications(traitement du signal et des images, commande des systèmes, statistiques, analyse et traite-ment des données, modélisation, ...).

Les possibilités de calcul de MATLAB sont étendues par l’intégration de boîtes à outils (Tool-boxes), telles que :– Statistics Toolbox, qui offre de nombreux outils pour l’analyse de données statistiques (en-

seignement de statistiques en 3e année),– Control System Toolbox, qui offre des outils et algorithmes permettant la mise au point de

lois de commande de systèmes linéaires (enseignement d’automatique en 3e année),– Optimization ToolBox, qui offre des outils et algorithmes orientés vers la résolution de pro-

blèmes d’optimisation (enseignement d’optimisation en 4e année), résolution d’équations non-linéaires

– . . .

1

Page 6: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Leçon 1

Généralités et prise en main

Objectifs

– Découvrir l’interface de MATLAB– Donner quelques opérations mathématiques de base– Ecrire un script MATLAB

1.1 Démarrer - Quitter

A partir du menu démarrer, lancez l’application MATLAB. Une fenêtre logo apparaît :

Figure 1.1 – Logo de démarrage MATLAB

puis apparaît l’espace de travail (figure 1.2).

Le symbole >> situé à gauche indique que l’interpréteur est prêt à recevoir une commande.Pour mettre fin à la session de travail et quitter l’environnement MATLAB, il suffit de taperla commande :

>> quit

1.2 Avant de saisir votre première commande

I MATLAB est sensible à la casse ("case sensitive"), ce qui signifie qu’il y a une différenceentre les majuscules et les minuscules.

I Il n’est pas nécessaire de déclarer les variables avant d’exécuter une commande ; la mémoirenécessaire à chaque variable est automatiquement allouée.

I Appuyer sur la touche Enter après la saisie de la commande pour l’exécuter.

2

Page 7: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 1 – Généralités et prise en main

Command WindowFenêtre de commande ou

Console d’exécution

Workspacevariables en

cours

CommandHistoryhistorique

descommandes

CurrentDirectoryRépertoire

de travail encours

Figure 1.2 – Environnement de travail MATLAB

Figure 1.3 – Invite de commande MATLAB

1.3 Opérations élémentaires +, −, ∗, /, ˆ

1.3.1 Calcul sans déclaration de variables

Tapez l’expression mathématique :

>> (1 + 2ˆ2)/(3 ∗ 4− 5)

ans =

0.7143

Remarques– Le résultat est automatiquement affectée à la variable ans (comme answer)– La variable ans apparaît dans la fenêtre Workspace– La commande apparaît dans la fenêtre Command History– Le résultat est affiché avec 5 chiffres significatifs. La précision par défaut correspond au

3

Page 8: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 1 – Généralités et prise en main

format short. Pour plus de précision, on choisira le format long.

Pour refaire la même opération en format long, tapez :

>> format long

puis double-cliquez sur l’opération précédente dans la fenêtre Command History :

>> (1 + 2ˆ2)/(3 ∗ 4− 5)

ans =

0.714285714285714

Pour retrouver une commande déjà exécutée, on peut aussi utiliser les flèches ↑ et ↓ duclavier.

Pour la suite, repassez au format short :

>> format short

1.3.2 Calcul avec déclaration de variablesDans MATLAB, il n’est pas nécessaire de préciser le type (entier, réel, complexe, . . . ) d’unevariable lors de la déclaration : il est fait automatiquement en fonction du calcul effectué.

On peut affecter une valeur à une variable :

>> a = 1a =

1

Refaites l’opération (1 + 2ˆ2)/(3 ∗ 4− 5), en déclarant 5 variables a, b, c, d, e :

>> a = 1a =

1

On peut supprimer l’affichage du résultat d’une commande en tapant un « ; » à la fin de lacommande :

>> b=2;>> c=3;>> d=4;>> e=5;

4

Page 9: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 1 – Généralités et prise en main

Le résultat sera affecté à la variable x :

>> x=(a + b^2)/(c*d-e)x =

0.7143

RemarqueMATLAB est sensible à la casse, donc x et X sont deux variables différentes.

1.3.3 Variables prédéfinies

MATLAB possède un certain nombre de variables prédéfinies. Par exemple :

>> pians =

3.1416

ou encore, pour désigner l’imaginaire des nombres complexes (i2 = −1 ou j2 = −1) :

>> ians =

0 + 1.0000i>> jans =

0 + 1.0000i

Attention ! ! !Les variables prédéfinies ne sont pas protégées, ce qui signifie que si on leur affecteune valeur, elles perdent leur valeur par défaut !

>> pi = 12;>> pipi =

12

1.4 Commandes MATLAB

1.4.1 Commande whos

La fenêtre Workspace affiche les variables en cours ainsi que leur valeur.La commande whos permet de lister les variables en cours :

5

Page 10: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 1 – Généralités et prise en main

>> whosName Size Bytes Class Attributesa 1x1 8 doubleans 1x1 8 doubleb 1x1 8 doublec 1x1 8 doubled 1x1 8 doublee 1x1 8 doublepi 1x1 8 doublex 1x1 8 double

Name : le nom de la variableSize : la taille de la variableBytes : nombre d’octets (1 octet = 8 bits) alloué à la variableClass : le type de la variable ; pour une chaîne de caractères : char

1.4.2 Commande clear

La commande clear, permet de supprimer définitivement des variables de l’espace de travail.Pour supprimer une variable spécifique, par exemple la variable ans :

>> clear ans

On peut aussi supprimer plusieurs variables simultanément :

>> clear a b c

ou encore toutes les variables :

>> clear

RemarqueEn supprimant la variable pi à laquelle la valeur 12 a été affectée, pi redevient la variableprédéfinie de MATLAB.

1.4.3 Commande help

La commande help permet d’accéder à l’aide en ligne de MATLAB.>> help

Elle donne les différents thèmes abordés dans la documentation. Examinez la liste des thèmesproposés dans l’aide.

Pour obtenir de l’aide sur un thème spécifique, par exemple, sur les opérateurs :

6

Page 11: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 1 – Généralités et prise en main

>> help ops

ou encore sur les fonctions élémentaires :

>> help elfun

Vous pouvez également accéder à une aide sous la forme d’un navigateur, à partir de la barred’icônes :

Help Navigator

Figure 1.4 – Accès au « Help Navigator »

RemarqueLa commande help n’est pas tabou, elle est à utiliser sans modération ! ! !

1.5 ScriptJusqu’à présent, les commandes ont été exécutées à partir de la console d’exécution de MAT-LAB. Lorsqu’il s’agit d’exécuter un ensemble de commandes avec éventuellement des conditionsou des boucles, il est préférable de réunir ces commandes dans un fichier script, appelé fichier-M.Ce fichier script peut être créé à partir de n’importe quel éditeur de texte, mais sauvegardé avecl’extension « .m », afin qu’il soit reconnu par MATLAB. Par ailleurs, MATLAB propose unéditeur, auquel on accède soit en cliquant sur l’icône nouveau fichier dans la barre d’icônes :

nouveau fichier

Figure 1.5 – Icône « Créer un fichier-M »

soit en déroulant le menu File :

Figure 1.6 – « Créer un fichier-M »

7

Page 12: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 1 – Généralités et prise en main

RemarqueLe fichier-M est sauvegardé, par défaut, dans le répertoire de travail en cours :

Changez de répertoire, pour votre propre répertoire de travail « z : ».

1.6 Création d’un fichier-M

Ouvrez l’éditeur et créez un fichier pour réaliser l’opération (1+2ˆ2)/(3∗4−5), avec déclarationde variables.

% Fichier test.m

% On commence par déclarer et initialiser les variables.% L’emploi du point virgule ( ; ) permet de ne pas afficher le résultat% d’une commande

% La commande suivante efface toutes les variables existantesclear

a = 1;b = 2;c = 3;d = 4;e = 5;

% Calculx = (a+b^2)/(c*d-e)

Enregistrez le fichier : test.m

Exécutez le fichier en tapant test dans la console d’exécution ou en cliquant sur le bouton ,dans la barre d’icônes de l’éditeur M :

>> testx =

0.7143

RemarqueUn commentaire est toujours précédé de %.

RemarqueDans la suite, tous vos scripts commenceront obligatoirement par la commandeclear.

8

Page 13: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 1 – Généralités et prise en main

1.7 Fichier-M et dialogue avec l’utilisateur

Dans l’exemple précédent, le fichier-M n’offre aucune interactivité durant l’exécution. Les va-riables sont créées et initialisées à l’exécution du fichier. Il est parfois nécessaire d’avoir unecertaine interactivité avec le fichier-M durant son exécution. Pour cela, deux commandes simplessont introduites.

1.7.1 Commande disp

La commande disp (pour display, i.e. afficher, help disp) permet d’afficher du texte ou unevaleur numérique (scalaire, vecteur ou matrice).Le texte à afficher doit être placé entre apostrophes « ’ » . Par exemple :

>> disp(’Vitesse en km/h ...’)Vitesse en km/h ...

>> disp(’50’)50

Une valeur numérique à afficher n’est pas encadrée par des apostrophes :

>> disp(13*3600/1000)46.8000

>> disp(pi)3.1416

1.7.2 Commande input

La commande input (help input) permet une saisie clavier avec affectation de la saisie à unevariable de type numérique ou de type caractère. Pour saisir une valeur numérique :

>> x=input(’Quelle valeur pour la vitesse ?’)Quelle valeur pour la vitesse ?|

MATLAB attend une saisie clavier validée par un appui sur la touche Enter

>> x=input(’Quelle valeur pour la vitesse ?’)Quelle valeur pour la vitesse ?50

x =

50

Pour saisir un caractère unique ou une chaîne de caractères, une indication supplémentaire estobligatoire dans la commande input :

9

Page 14: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 1 – Généralités et prise en main

>> x=input(’Quelle unité ?’,’s’)Quelle unité ?|

La mention « ’s’ » précise qu’une variable de type caractère (s pour string) est attendue :

>> x=input(’Quelle unité ?’,’s’)Quelle unité ?km/h

x =

km/h

Il ne s’agit bien sûr pas d’une valeur numérique !

1.8 Application : conversion d’unitéCréez un script MATLAB dans lequel vous effectuez les opérations suivantes :

1. convertir la valeur d’une vitesse donnée par l’utilisateur, de m/s en km/h ;2. convertir la valeur d’une vitesse donnée par l’utilisateur, de km/h en m/s ;3. convertir la valeur d’un angle donnée par l’utilisateur, de degrés en radians ;4. convertir la valeur d’un angle donnée par l’utilisateur, de radians en degrés.

10

Page 15: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Leçon 2

Vecteurs et matrices :applications aux images

Objectifs

– Manipuler des vecteurs et des matrices– Donner les opérations de base sur les matrices– Illustrer et appliquer ces notions à des images

2.1 Notion d’image

Une image est une matrice de dimensionM ×N (tableaude M lignes et N colonnes).p(i, j) représente le niveau de gris du pixel situé à la lignei et à la colonne j, dans l’image.Il existe plusieurs types d’image, dont les 3 principauxsont binaire, niveau de gris, couleur RGB, présentés ci-dessous.

M lignes

N colonnes

i

j

p(i,j)

Figure 2.1 – Matrice de pixels

2.1.1 Image binaire

Une image binaire est une matrice de dimensionM × N , où chaque élément peut prendre uni-quement la valeur 0 ou 1. Les pixels sont noirs(p(i, j) = 0) ou blancs (p(i, j) = 1).

1 1 0 0

1 1 1 0

0 1 1 0

0 0 0 1

Figure 2.2 – Image binaire (matriceM ×N)

@Im

agemodifiée,Jean

-ClaudeGam

ache

Lemon

deen

images,CCDMD.

11

Page 16: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 2 – Vecteurs et matrices :applications aux images

2.1.2 Image en niveau de gris

Une image en niveau de gris est matrice de di-mension M × N . Chaque pixel possède un ni-veau de gris entre le noir et le blanc. En général,le niveau de gris possède 256 nuances de dégradé(codage sur 8 bits). Dans ce cas, p(i, j) ∈ [0; 255](0 pour le noir et 255 pour le blanc).

99 90 67 230

222 152 255 129

156 199 255 150

116 132 162 163

Figure 2.3 – Image en niveau de gris (matriceM ×N)

@Im

agemodifiée,Virginie

Lan

dry

Lemon

deen

images,CCDMD.

2.1.3 Image couleur RGB

Une image couleur RGB est une matrice dedimension M × N × 3. Chaque pixel possède3 composantes, une pour le rouge (Red), unepour le vert (Green) et une pour le bleu (Blue).Chaque composante est comprise entre 0 et 255 :pR(i, j) ∈ [0; 255] (composante rouge du pixelp(i, j)), pG(i, j) ∈ [0; 255] (composante verte)et pB(i, j) ∈ [0; 255] (composante bleue).

99 90 67 230

222 152 255 129

156 199 255 150

116 132 162 163

99 90 67 230

222 152 255 129

156 199 255 150

116 132 162 163

99 90 67 230

222 152 255 129

156 199 255 150

116 132 162 163

R

G

B

Figure 2.4 – Image en couleur RGB (matriceM × L× 3)

@Denis

Chab

otLemon

deen

images,CCDMD.

2.1.4 Lire une image sous MATLAB

Dans MATLAB, il est possible d’importer des images de types JPG, BMP, GIF, en utilisant lafonction imread (help imread).La fonction imread prend en argument le nom du fichier de l’image qui doit être mis entreapostrophes simples « ’ » . Le fichier de l’image doit se trouver dans le répertoire de travailcourant. Par exemple :

>> im = imread(’bancgris2.jpg’)

Pour afficher l’image importée (fonction imshow) :

12

Page 17: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 2 – Vecteurs et matrices :applications aux images

>> imshow(im)

Figure 2.5 – Affichage de l’image sous MATLAB - fonction imshow

@Im

agemodifiée

Virginie

Lan

dry

Lemon

deen

images,CCDMD.

L’image ’bancgris2.jpg’ est en niveau de gris. La matrice im contient la valeur de chaquepixel de l’image.La fonction size (help size) permet de connaître la dimension de la matrice im :

>> size(im)ans =

651 961

La matrice im est de dimension 2 (size renvoie 2 valeurs). Elle peut être vue comme un tableaupossédant 651 lignes et 961 colonnes.

Importez l’image couleur ’chili2.jpg’, affichez la et donnez sa dimension.

Figure 2.6 – Affichage de l’image sous MATLAB - fonction imshow

@Im

agemodifiée

François

Régis

Fou

rnier

Lemon

deen

images,CCDMD.

La matrice im2 est de dimension 3 (size renvoie 3 valeurs). Elle peut être vue comme 3 tableauxpossédant chacun 480 lignes et 320 colonnes. Le premier tableau correspondant à la composante

13

Page 18: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 2 – Vecteurs et matrices :applications aux images

R de l’image, le 2ème à la composante G et le 3ème à la composante B.

2.2 Vecteurs et matrices

L’élément de base de MATLAB est la matrice.Dans la section précédente, les matrices étaient "pré-remplies" avec les valeurs des pixels desimages. L’utilisateur peut aussi créer des vecteurs et des matrices et les remplir de valeurs.

2.2.1 Créer un vecteur

Vecteur ligneUn vecteur de type ligne possède 1 ligne et N colonnes. Sa dimension est donc 1 × N . Parexemple, un vecteur ligne de dimension 1× 3, se déclare de la manière suivante :

>> vlin1 = [11 12 13]

vlin1 =

11 12 13

Les crochets [ ] sont obligatoires et chaque élément est séparé par un espace. Exécutez lacommande size pour obtenir la dimension de vlin1.

Vecteur colonneUn vecteur de type colonne possède M lignes et 1 colonne. Sa dimension est donc M × 1. Parexemple, un vecteur colonne de dimension 3× 1, se déclare de la manière suivante :

>> vcol1 = [11; 21; 31]

vcol1 =

11

21

31

Les crochets [ ] sont obligatoires et chaque élément est séparé par un « ; ». Exécutez la com-mande size pour obtenir la dimension de vcol1.

2.2.2 Créer une matrice

Une matrice peut être vue comme un tableau possédant M lignes et N colonnes. Elle a doncune dimension de M ×N .La création d’une matrice se fait par empilement de vecteurs lignes. Les crochets [ ] sont obli-gatoires pour définir le début et la fin de la matrice. Par exemple, pour créer une matrice dedimension 3× 3 :

14

Page 19: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 2 – Vecteurs et matrices :applications aux images

>> mat1 = [11 12 13; 21 22 23; 31 32 33]

mat1 =

11 12 13

21 22 23

31 32 33

Chaque élément d’une ligne est séparée par un espace et le « ; »permet de passer d’une ligne àune autre. Exécutez la commande size pour obtenir la dimension de mat1.

2.2.3 Accéder à des valeurs dans une matriceIl est possible d’accéder à n’importe quelle valeur d’un vecteur ou d’une matrice, par la syntaxesuivante :

nom_matrice(indice_ligne,indice_colonne)

Par exemple, en reprenant la matrice im2 correspondant à l’image chili2.jpg :

>> valpix = im2(100, 200, 2)

valpix =

23

valpix correspond à la valeur du pixel situé à la ligne 100, colonne 200, pour la composanteG.

Il est aussi possible d’accéder à un ensemble de valeurs, par la syntaxe suivante :

valeur_debut : valeur_fin

On obtient toutes les valeurs à partir de valeur_debut jusqu’à valeur_fin, par pas de 1.

RemarqueAttention ! valeur_debut commence toujours à 1 (ou valeur supérieure à 1) maisjamais à 0 !

Pour obtenir toutes les valeurs à partir de valeur_debut jusqu’à valeur_fin, par un pasquelconque, la syntaxe suivante est utilisée :

valeur_debut : pas : valeur_fin

Par exemple, pour extraire tous les pixels compris entre 186 et 336, par pas de 1, pour lesindices de lignes et compris entre 80 et 193, par pas de 1, pour les indices de colonnes, pour les3 composantes R, G et B et pour afficher le résultat obtenu :

valpix2 = im2(186 : 336, 80 : 193, 1 : 3);imshow(valpix2)

15

Page 20: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 2 – Vecteurs et matrices :applications aux images

Figure 2.7 – Extraire des valeurs d’une matrice

@Im

agemodifiée

François

Régis

Fou

rnier

Lemon

deen

images,CCDMD.

RemarqueA la place d’écrire valpix2 = im2(186:336,80:193,1:3) pour extraire les valeurs souhaitéessur les 3 composantes, on peut aussi écrire : valpix2 = im2(186:336,80:193,:). Les « : »si-gnifie extraire tous les éléments.Par exemple, pour extraire uniquement la composante R de l’image, c’est-à-dire toutes les ligneset toutes le colonnes de la composante R :

valpixR = im2(:, :, 1);imshow(valpixR)

Les « : »à la place des indices de ligne signifient extraire toutes les lignes.Les « : »à la place des indices de colonne signifient extraire toutes les colonnes.

Faites de même avec les composantes G et B.

Figure 2.8 – Composante Rde l’image

Figure 2.9 – Composante Gde l’image

Figure 2.10 – Composante Bde l’image

@Im

agemodifiée

François

Régis

Fou

rnier

Lemon

deen

images,CCDMD.

16

Page 21: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 2 – Vecteurs et matrices :applications aux images

2.2.4 Transposer une matrice

Transposer une matrice de dimension M × N consiste à remplacer les lignes par les colonneset les colonnes par les lignes. La matrice transposée a pour dimension N ×M . En MATLAB,la fonction transpose ou de façon équivalente l’apostrophe « ’ »permettent de transposer unematrice. Par exemple, pour transformer un vecteur ligne en vecteur colonne :

>> vlin1 = [11 12 13]

vlin1 =

11 12 13>> vcol2=vlin1’vcol2 =

11

12

13

Déterminez la dimension de la matrice valpixR créée précédemment.

>> size(valpixR)ans =

480 320

Transposez la matrice valpixR, affichez la matrice obtenue et déterminez sa dimension.

>> vapixRt = valpixR’;>> size(vapixRt)ans =

320 480>> imshow(vapixRt)

Figure 2.11 – Transposition de la matrice @Im

agemodifiée

François

Régis

Fou

rnier

Lemon

deen

images,CCDMD.

17

Page 22: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 2 – Vecteurs et matrices :applications aux images

2.2.5 Concaténation

Il est possible d’ajouter un élément à une matrice. Par exemple, pour ajouter la valeur 10 audébut du vecteur ligne vlin1 et la valeur 14 à la fin de ce vecteur :

>> vlin3 = [10 vlin1 14]

vlin3 =

10 11 12 13 14

La concaténation se fait par un espace et les crochets [ ] sont obligatoires. Pour ajouter lavaleur 1 au début du vecteur colonne vcol1 et la valeur 41 à la fin de ce vecteur :

>> vcol2 = [1; vcol1; 41]

vlin3 =

1

11

21

31

41

La concaténation se fait par un ; et les crochets [ ] sont obligatoires.

Importez l’image avionm.jpg en MATLAB.Extrayez les pixels situés uniquement aux lignes 433 à 533, sur toutes les colonnes et pour les3 composantes.Concaténez le résultat obtenu à l’image de départ (ajout au bas de l’image, par exemple).

im3 = imread(’avionm.jpg’);imshow(im3)valpix4(:,:,1) = [im3(:,:,1);im3(433:533,:,1)];valpix4(:,:,2) = [im3(:,:,2);im3(433:533,:,2)];valpix4(:,:,3) = [im3(:,:,3);im3(433:533,:,3)];imshow(valpix4)

18

Page 23: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 2 – Vecteurs et matrices :applications aux images

Figure 2.12 – Image de départ Figure 2.13 – Image obtenue parconcaténation de matrice

@Im

agemodifiée

Eve

LucieBou

rque

Lemon

deen

images,CCDMD.

2.2.6 Modifier une valeur dans une matrice

Pour modifier une valeur dans une matrice, il suffit de préciser l’indice de ligne et de colonnesouhaité et d’affecter la nouvelle valeur. Par exemple :

>> vcol2(3) = 100vcol2 =

1

11

100

31

41

Importez l’image volcan.jpg.Extrayez tous les pixels situés uniquement aux lignes 110 à 510 et aux colonnes 630 à 760, pourles 3 composantes.Remplacez dans l’image de départ les pixels situés aux lignes 110 à 510 et aux colonnes 500 à630 par ceux extraits précédemment.

19

Page 24: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 2 – Vecteurs et matrices :applications aux images

Figure 2.14 – Image de départFigure 2.15 – Image obtenue en modifiant des

valeurs de la matrice

@Im

agemodifiée

Eve

LucieBou

rque

Lemon

deen

images,CCDMD.

2.2.7 Opérations élémentaires +, −, ∗, /

Addition, soustraction d’une constante

Pour additionner une constante à un vecteur, il suffit d’écrire :

>> vlin3 + 2ans =

12

13

14

15

16

L’addition est effectuée sur chaque composante du vecteur (idem pour la soustraction).

Importez l’image montgolfiere.jpg.Ajoutez la valeur 64 à la matrice de l’image.Soustrayez la valeur 64 à la matrice de l’image et observez les résultats obtenus.

im5 = imread(’montgolfiere2.jpg’);imshow(im5);figureimshow(im5 + 64);figureimshow(im5 - 64);

20

Page 25: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 2 – Vecteurs et matrices :applications aux images

Figure 2.16 – Image de départen additionnant 64 à la

matrice

Figure 2.17 – Image obtenueen additionnant 64 à la

matrice

Figure 2.18 – Image obtenueen soustrayant 64 de la

matrice

@Im

agemodifiée

Jean

ClaudeGam

ache

Lemon

deen

images,CCDMD.

RemarqueL’instruction figure permet de créer une nouvelle figure. Cela permet d’afficher une imagedans une nouvelle figure, sans écraser l’image précédente.L’instruction close all permet de fermer toutes les figures ouvertes.

Dans la suite, tous vos scripts commenceront obligatoirement par :

clear;close all;

Ajouter la valeur 64 tend à éclaircir l’image, car tous les pixels supérieurs à 255 sont remplacéspar la valeur 255 (blanc).Soustraire la valeur 64 tend à foncer l’image, car tous les pixels inférieurs à 0 sont remplacéspar la valeur 0 (noir).

L’opération 255−im permet d’obtenir le complément de l’image im, en niveau de gris. Si l’imageest binaire, l’opération devient 1 − image_bin. Importez l’image fleurNB.jpg et donnez soncomplément.Addition, soustraction de deux matrices

On peut additionner ou soustraire 2 matrices qui possèdent les mêmes dimensions.

>> imshow(im2 + im3);??? Error using ==> plusArray dimensions must match for binary array op.>> size(im2)ans =

480 320 3>> size(im3)ans =

533 800 3

21

Page 26: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 2 – Vecteurs et matrices :applications aux images

Les 2 matrices im2 et im3 (correspondant aux images chili2.jpg et avionm.jpg) n’ayant pasla même dimension, MATLAB retourne une erreur si on tente de les additionner.Additionnez les matrices im3 et im4 des images avionm.jpg et volcan.jpg.

Figure 2.19 – Addition de 2 matrices Figure 2.20 – Soustraction de 2 matrices

@Im

agemodifiée

Eve

LucieBou

rque

Lemon

deen

images,CCDMD.

Multiplication, division par une constante

Pour multiplier une matrice par une constante, il suffit d’écrire :

>> 3*mat1mat1 =

33 36 39

63 66 69

93 96 99

La multiplication est effectuée sur chaque composante de la matrice (idem pour la division /).

Pour effectuer certaines opérations sur les matrices correspondant à des images, il convientde les convertir en type double :

>> im2d = double(im2);>> imshow(im2d)

22

Page 27: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 2 – Vecteurs et matrices :applications aux images

Figure 2.21 – Image d’origineFigure 2.22 – Image après conversion en type

double

@Im

agemodifiée

François

Régis

Fou

rnier

Lemon

deen

images,CCDMD.

L’image après conversion en type double ne ressemble plus à l’image d’origine (cf. figure 2.22).Pour une matrice de type double, la fonction imshow attend des valeurs comprises entre 0(noir) et 1 (blanc). Une valeur v telle que 0 < v < 1 est représentée en niveau de gris [255× v].Les valeurs supérieures à 1 sont représentées à 1 (blanc) et les valeurs inférieures à 0 sont re-présentées à 0 (noir).Pour représenter la matrice im2d, il suffit de ramener les valeurs dans l’intervalle [0; 1], en di-visant toutes les valeurs par 255 :

>> imshow(im2d/255)

Divisez la matrice im2d par 128 et affichez le résultat. Divisez ensuite la matrice im2d par 512et affichez le résultat.

Figure 2.23 – Image aprèsdivision par 255

Figure 2.24 – Image aprèsdivision par 128

Figure 2.25 – Image aprèsdivision par 512

@Im

agemodifiée

François

Régis

Fou

rnier

Lemon

deen

images,CCDMD.

En divisant la matrice de l’image par 128, l’intervalle des valeurs devient [0; 2] et toutes lesvaleurs comprises entre 1 et 2 sont représentées à 1 (blanc). En divisant la matrice par 512,

23

Page 28: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 2 – Vecteurs et matrices :applications aux images

l’intervalle des valeurs est ramené à [0; 0.5], fonçant ainsi l’image.

2.2.8 Matrices particulièresDans MATLAB, il existe des matrices prédéfinies contenant des valeurs particulières, commeones, zeros, eye.

onesLa fonction ones(m,n) permet de créer une matrice, de dimensionm×n, contenant uniquementla valeur 1 :

>> ones(2,3)mat1 =

1 1 1

1 1 1

zerosLa fonction zeros(m,n) permet de créer une matrice, de dimension m× n, contenant unique-ment la valeur 0 :

>> zeros(2,3)mat1 =

0 0 0

0 0 0

eyeLa fonction eye(n) permet de créer la matrice identité (valeur 1 sur la diagonale, valeur 0ailleurs), de dimension n× n :

>> eye(3)mat1 =

1 0 0

0 1 0

0 0 1

24

Page 29: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Leçon 3

Opérateurs logiques, conditions et bouclesapplications au seuillage d’image

Objectifs

– Donner les opérateurs logiques– Ecrire des conditions if– Ecrire des boucles for– Illustrer et appliquer ces notions à des images

3.1 Opérateurs logiques

Les opérateurs logiques ainsi que leur syntaxe MATLAB sont listés ci-dessous.

Opérateur logique Syntaxe MATLAB

OU |ET &

Négation ∼

Tableau 3.1 – Opérateurs logiques

Dans MATLAB, la proposition logique FAUX vaut 0 et la proposition logique VRAI vaut 1.

3.2 Condition if

La syntaxe MATLAB d’une condition if est la suivante :

if condition1

instruction1;

...

elseinstruction2;

...

end

25

Page 30: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 3 – Opérateurs logiques, conditions et bouclesapplications au seuillage d’image

L’imbrication de plusieurs conditions est possible :

if condition1

instruction1;

...

elseif condition2

instruction2;

...

elseinstruction3;

...

end

Les conditions peuvent inclure des opérateurs relationnels et logiques.

Opérateur relationnel Syntaxe MATLAB

Egal à ==Différent de ∼=

Supérieur à >Inférieur à <

Supérieur ou égal à >=Inférieur ou égal à <=

Tableau 3.2 – Opérateurs relationnels

Opérateur logique Syntaxe MATLAB

OU ||ET &&

Négation ∼

Tableau 3.3 – Opérateurs logiques

RemarqueLa structure switch ... case existe en MATLABmais n’est pas développée ici (help switch).

3.3 Boucles

3.3.1 Boucle for

Une boucle for permet de répéter des instructions un certain nombre de fois, selon la valeurde la variable de boucle, appelée compteur. Le compteur est compris entre une valeur de début

26

Page 31: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 3 – Opérateurs logiques, conditions et bouclesapplications au seuillage d’image

et une valeur de fin et évolue avec un pas donné. La structure d’une boucle for en MATLAB est :

for compteur = val_debut : pas : val_fininstruction1;

instruction2;

...

end

RemarqueSi le pas est omis (for i=val_debut:val_fin), par défaut, il vaut 1.

RemarqueSouvent, le compteur est appelé i ou j. Les variables i et j identifient aussi l’imaginaire, pourentrer un nombre complexe. En les utilisant comme compteur, on perd la représentation dunombre complexe.

3.3.2 Boucle while

La boucle while permet de répéter des instructions tant qu’une condition donnée est satisfaite.Sa syntaxe en MATLAB est la suivante :

while condition

instruction1;

instruction2;

...

end

RemarqueSi, par inadvertance, vous avez créé une boucle infinie, stoppez l’exécution par la commandeCltr + C.

3.4 Exemple 1 : seuillage d’imageLe seuillage consiste à transformer une image couleur ou en niveau de gris en image binaire(uniquement des pixels noirs ou blancs). Pour cela, un seuil est choisi, de telle sorte que tousles pixels en-dessous de ce seuil sont mis en noir (0) et tous les pixels au-dessus du seuil sontmis en blanc (1). Ce procédé permet d’isoler des objets dans l’image.

Importez l’image rice.bmp et affichez la.Déterminez la dimension de l’image.

Pour isoler chaque grain de riz, un seuillage de l’image est effectué.

Transformez la matrice de l’image rice.bmp en type double.

27

Page 32: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 3 – Opérateurs logiques, conditions et bouclesapplications au seuillage d’image

Créez une matrice de même dimension que la matrice de l’image et qui contient uniquement lavaleur 1 (fonction ones, voir Leçon 2, help ones). Représentez l’image correspondant à cettematrice.

Après analyse, le seuil utilisé pour cette image est 150 :

– un pixel devient blanc ( = 1) si sa valeur est supérieure à 150 ;– un pixel devient noir ( = 0) si sa valeur est inférieure à 150 ;

A l’aide de boucles for, parcourez la matrice et testez la valeur de chaque pixel pour la rem-placer par 0 ou 1, selon le seuil.

Figure 3.1 – Image de départ Figure 3.2 – Extraction des grains de riz parseuillage

3.5 Exemple 2 : détection de contour

Considérons une image dont chaque pixel correspond à un niveau de gris. Le contour d’un ob-jet dans une image correspond à une variation significative des niveaux de gris. En général, laméthode utilisée pour détecter ces variations est la recherche d’extrema locaux dans la dérivéede l’image (gradient). Pour estimer cette dérivée, une approche consiste à appliquer un masquesur chaque pixel de l’image.

Par exemple, considérons l’image I constituée de 25 pixels et le masque donné par Mx (pourestimer la dérivée par rapport à x) et My (pour estimer la dérivée par rapport à y) :

I =

200 201 0 0 0

202 203 0 0 0

0 0 0 0 0

0 0 0 0 0

0 0 0 0 0

, Mx =

[1 0

0 −1

], My =

[0 −1

1 0

](3.1)

Pour estimer la dérivée de l’image par rapport à x, notée Gx, au pixel en rouge, on applique le

28

Page 33: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 3 – Opérateurs logiques, conditions et bouclesapplications au seuillage d’image

masque Mx sur la fenêtre de 2× 2 pixels (pixel rouge + pixels bleus). On obtient :

Gx =∂I

∂x

∣∣∣pix.rouge

= 200×1+201×0+200×0+201×(−1)+202×1+203×0+202×0+203×(−1)

De la même façon, pour estimer la dérivée de l’image par rapport à y, notée Gy, au pixel rouge,on applique le masque My sur la même fenêtre de pixels :

Gy =∂I

∂y

∣∣∣pix.rouge

= 200×0+201×(−1)+200×1+201×0+202×0+203×(−1)+202×1+203×0

La nouvelle valeur du pixel rouge est ainsi donnée par :

G =√G2

x +G2y (3.2)

Il suffit ensuite d’appliquer le masque sur tous les pixels de l’image.

Appliquez le masque donné par Mx et My sur l’image rice.bmp et affichez l’image obtenue.Comment améliorer la qualité de l’image ? Proposez une solution simple.

Pour supprimer les pixels gris qui ne font pas partie du contour, appliquez un seuillage del’image. Afin de fixer le seuil correspondant, représentez l’histogramme des niveaux de gris àl’aide de la fonction imhist (help imhist).

Figure 3.3 – Image de départ Figure 3.4 – Image après application du masque

Figure 3.5 – Amélioration de la qualité de l’image Figure 3.6 – Image après seuillage

29

Page 34: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 3 – Opérateurs logiques, conditions et bouclesapplications au seuillage d’image

3.6 Application : contrôle de conformité d’un produitSur certaine chaîne de production à haute cadence, des images des produits de la chaîne sontprises et analysées afin de déterminer si les produits sont conformes. Le but de cet exemple estde déterminer si des gélules dans des plaquettes pharmaceutiques sont manquantes. Les gélulessont blanches et vertes et peuvent être placées dans n’importe quel sens, l’essentiel étant d’avoirle nombre correct de gélules dans la plaquette.

Figure 3.7 – Image d’une plaquette conforme

Pour traiter ce problème, la technique de seuillage est utilisée sur une image de référence qui estconforme, afin d’extraire les pixels verts caractérisant les gélules. Tous ces pixels verts seronttransformées en noir et les autres pixels en blanc. Il suffit ensuite de compter le nombre depixels noirs pour une plaquette conforme. Si dans une plaquette, des gélules sont manquantesou sont de mauvaises couleurs, le nombre de pixels noirs sera inférieur à la valeur de référence.

1. Importez l’image plaquette1.jpg.2. D’après une analyse préalable de l’image, les pixels verts des gélules sont caractérisés par

les valeurs suivantes :

– proportion de la composante R comprise entre 10% et 25% ;– proportion de la composante G comprise entre 40% et 50% ;– proportion de la composante B comprise entre 30% et 40%.

Recherchez les pixels verts compris dans les proportions précédentes et transformez les ennoir (valeur 0). Transformez tous les autres pixels en blanc (valeur 1).

3. Comptez le nombre de pixels noirs.4. Importez l’image plaquette2.jpg.5. A l’aide de votre programme, testez la conformité de la plaquette. Retournez un message

à l’utilisateur pour conclure si la plaquette est conforme ou non.

30

Page 35: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Leçon 4

GraphiquesApplications à l’analyse de données et à

l’analyse fréquentielle

Objectifs

– Réaliser un graphique– Commenter un graphique et manipuler les axes de la figure– Exporter un graphique– Illustrer et appliquer ces notions à l’analyse de données et à l’analyse fréquentielle

4.1 Introduction

Dans le cadre de la lutte et de la prévention des incendies de forêts, une base de donnée surles feux, en région méditerranéenne a été développée (www.promethee.com). L’étude suivantes’intéresse aux feux, survenus en Corse, de 1973 à 2011. L’objectif est d’étudier l’évolution deces feux et de déterminer leurs relations possibles selon le type de végétation.

4.1.1 Importer un ficher de données

Sous MATLAB, il est possible d’importer des fichiers de données, à l’aide de la fonction load(help load). Une matrice portant le nom du ficher est créée dans le workspace et contient lesdonnées se trouvant dans le fichier.

Dans un nouveau fichier-M, importez le fichier de données donneesfeu.dat, contenant l’évolu-tion au cours du temps du nombre d’incendies, selon le type de végétation :

clear;close all;load donneesfeu.dat

La matrice donneesfeu a été créée dans le workspace. Sa dimension est 39×7 (size(donneesfeu)).Les données sont organisées comme suit :

– Colonne 1 : année– Colonne 2 : nombre de feux de bosquet

31

Page 36: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 4 – GraphiquesApplications à l’analyse de données et à l’analyse fréquentielle

– Colonne 3 : nombre de feux de boisement– Colonne 4 : nombre de feux d’herbe– Colonne 5 : nombre de feux de végétation agricole– Colonne 6 : nombre de feux dus aux déchets d’ordure dans la nature– Colonne 7 : nombre de feux autres

4.1.2 Statistiques de baseDéterminez le nombre d’incendies total par année.Déterminez le nombre moyen d’incendies par type de végétation (bosquet, boisement, ...) enutilisant la fonction mean de MATLAB (help mean).Déterminez l’écart-type par type de végétation, en utilisant la fonction std (help std).Déterminez le nombre maximal et minimal d’incendies par type de végétation, à l’aide desfonctions max et min (help max, help min).Commentez les résultats obtenus.

4.2 Tracer un graphiquePour tracer un graphique 2D en MATLAB, la fonction plot (help plot) est utilisée. Sa syn-taxe est :

plot(vecteurAbscisse,vecteurOrdonnee,options)

Représentez l’évolution du nombre total d’incendies en fonction des années.

Figure 4.1 – Evolution du nombre d’incendies en Corse de 1973 à 2011

Par défaut, MATLAB relie les points. Dans cette étude, à chaque année correspond un nombred’incendies et il n’y a pas de continuité des valeurs entre 2 années (les valeurs sont discrètes).Par conséquent, il serait plus judicieux de tracer les points, sans les relier. Cette option est àrajouter dans la fonction plot par ’.’ :

plot(donneesfeu(:,1),nbtotal,’.’)

32

Page 37: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 4 – GraphiquesApplications à l’analyse de données et à l’analyse fréquentielle

Figure 4.2 – Evolution du nombre d’incendies en Corse de 1973 à 2011

D’autres marqueurs sont possibles. Par exemple, ’o’, x, +, d, ...D’autres options que les marqueurs sont possibles dans la fonction plot, par exemple la couleurdu tracé (voir l’aide sur cette fonction).

4.3 Titre et labels

Pour rajouter un titre au graphique, on utilise la commande title et le texte doit être obliga-toirement placé entre apostrophes « ’ » :

plot(donneesfeu(:,1),nbtotal,’.’)title(’Evolution du nombre d”incendies en Corse de 1973 à 2011’)

Pour ajouter un label à l’axe des abscisses, on utilise la commande xlabel et pour ajouter unlabel à l’axe des ordonnées, on utilise ylabel. Le texte doit être obligatoirement placé entreapostrophes « ’ » :

plot(donneesfeu(:,1),nbtotal,’.’)title(’Evolution du nombre d”incendies en Corse de 1973 à 2011’)xlabel(’Année’)ylabel(’Nombre d”incendies’)

33

Page 38: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 4 – GraphiquesApplications à l’analyse de données et à l’analyse fréquentielle

Figure 4.3 – Evolution des incendies en Corse de 1973 à 2011

4.4 AxesMATLAB représente l’évolution du nombre d’incendies de 1970 à 2015. Pour modifier cet axeafin de représenter cette évolution de 1973 à 2011 pour l’abscisse et de 0.4 × 104 à 1.8 × 104

pour l’ordonnée, la fonction axis([xmin xmax y min ymax]) (help axis) est utilisée.

Effectuez ce changement d’axe.

Figure 4.4 – Evolution des incendies en Corse de 1973 à 2011

4.5 Sauvegarder et exporter une figure MATLAB

4.5.1 SauvegardePour sauvegarder une figure MATLAB, il suffit d’aller dans le menu de la figure File, puisSave As .... Les figures MATLAB portent l’extension .fig.Sauvegardez la figure précédente, puis fermez la. Pour rouvrir cette figure, il suffit de taper la

34

Page 39: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 4 – GraphiquesApplications à l’analyse de données et à l’analyse fréquentielle

commande figure dans la console MATLAB. Une figure vide apparaît. Dans le menu de cettefigure, File, Open, sélectionnez votre figure.

4.5.2 ExportIl peut être très utile d’exporter une figure au format jpg, pdf, ..., pour la placer dans unrapport. Pour cela, dans le menu de la figure File puis Save As ... et sélectionnez le formatsouhaité. Par défaut, MATLAB propose l’extension .fig.

4.6 Tracés multiples

4.6.1 Commande hold

On souhaite représenter sur la même figure l’évolution des incendies de bosquet et de boisement,au cours du temps, afin de les comparer. Pour cela, la commande hold est utilisée.

plot(donneesfeu(:,1),donneesfeu(:,2),’.’)hold onplot(donneesfeu(:,1),donneesfeu(:,3),’g.’)title(’Evolution des incendies de bosquet et de boisement, en Corse, de 1973 à2011’)xlabel(’Année’)ylabel(’Nombre d”incendies’)

Après la commande hold on, tous les tracés seront effectués sur la même figure. La commandehold off permet d’arrêter les tracés multiples.L’option ’g.’ dans la fonction plot permet de préciser le type de tracé : des points verts(green). On peut aussi tracer en rouge : ’r.’ (red).

Ajoutez une légende (commande legend), help legend), pour distinguer les deux tracés,

Figure 4.5 – Evolution du nombre d’incendies en Corse de 1973 à 2011

35

Page 40: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 4 – GraphiquesApplications à l’analyse de données et à l’analyse fréquentielle

4.6.2 Commande subplot

On peut aussi représenter, sur la même figure, plusieurs sous-figures, à l’aide de la fonctionsubplot(m,n,p) (help subplot). Cette fonction divise la figure en un tableau de m lignes etn colonnes et permet de représenter m×n sous-figures sur la même figure. p indique le numérode la sous-figure sélectionnée :

subplot(2,1,1)plot(donneesfeu(:,1),donneesfeu(:,2),’.’)xlabel(’Année’)ylabel(’Nombre d”incendies de bosquet’)title(’Feux de bosquet’)subplot(2,1,2)plot(donneesfeu(:,1),donneesfeu(:,3),’.’)xlabel(’Année’)ylabel(’Nombre d”incendies de boisement’)axis([1970 2015 0 2000])title(’Feux de boisement’)

Figure 4.6 – Evolution du nombre d’incendies en Corse de 1973 à 2011

L’évolution des feux de bosquet semble suivre celle des feux de boisement.Représentez les feux de boisement en fonction des feux de bosquet. Que pouvez-vous concluresur l’allure de la relation entre ces 2 types de feux ?

On cherche un modèle pour expliquer la relation entre les feux de bosquet et de boisement. Cemodèle pourrait correspondre à une droite dont les coefficients sont déterminés par une étudepréalable (vous aurez l’occasion de voir en 3ème année comment ils sont déterminés) :

feux_boisement = 0.45× feux_bosquet + 184

Sur la figure précédente, représentez cette droite.

36

Page 41: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 4 – GraphiquesApplications à l’analyse de données et à l’analyse fréquentielle

Figure 4.7 – Modèle linéaire entre les feux de bosquet et de boisement

Si on relève 2000 feux de bosquet, combien s’attend-on à obtenir de feux de boisement ?

Déterminez la différence entre le nombre d’incendies de boisement mesuré et celui calculé àl’aide de la droite.

4.7 Autres types de graphiques

4.7.1 Fonction hist

Pour tester la qualité du modèle linéaire proposé, on souhaite représenter la distribution del’erreur entre les mesures et le modèle, calculée précédemment. Pour cela, la fonction hist(help hist) de MATLAB est utilisée :

hist(erreur)title(’Erreur entre les mesures et le modèle’)

Figure 4.8 – Modélisation du nombre d’incendies de boisement

37

Page 42: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 4 – GraphiquesApplications à l’analyse de données et à l’analyse fréquentielle

Que pouvez-vous conclure ?

4.7.2 Fonction bar

Dans cette étude, il serait judicieux de représenter par un diagramme en barres, le pourcentaged’incendies par type de végétation.Pour cela, déterminez le nombre total d’incendies pour chaque type de végétation, en utilisantla fonction sum (help sum).

feutotal=sum(donneesfeu(:,2:7))

Pour chaque colonne, la somme de toutes les lignes est calculée. La dimension du vecteurfeutotal ainsi obtenu est 1× 6.

Déterminez le nombre total d’incendies tout type de végétation confondu.

Pour tracer un diagramme en barres dans MATLAB, la fonction bar est utilisée :

bar(feutotal*100/sum(sum(donneesfeu(:,2:7))))ylabel(’Pourcentage’)title(’Proportion d”incendies par type de végétation’)

Figure 4.9 – Proportion d’incendies en Corse, par type de végétation

Sur l’axe des abscisses, il serait préférable de faire apparaître le type de végétation. Pour changerle label d’un axe, la commande set (help set) est utilisée, comportant 3 paramètres :

set(H,’PropertyName’,’PropertyValue’)

– H désigne l’objet graphique à modifier : gca (axes courants).– PropertyName désigne la propriété spécifique à modifier dans l’objet : XTickLabel.– PropertyValue désigne la valeur à affecter à la propriété :’Bosquet’,’Boisement’,’Herbe’,’Agricole’,’Déchets’,’Autres’

38

Page 43: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 4 – GraphiquesApplications à l’analyse de données et à l’analyse fréquentielle

Dans l’exemple, la commande serait :

set(gca,’XTickLabel’,’Bosquet’,’Boisement’,’Herbe’,’Agricole’,’Déchets’,’Autres’)

Figure 4.10 – Proportion d’incendies en Corse, par type de végétation

Il est aussi possible de représenter ces pourcentages par un camembert (fonction pie).

4.7.3 Graphique 3D

Avec MATLAB il est possible de représenter des graphiques en 3D, à l’aide de la fonction plot3(help plot3). Pour représenter le nombre d’incendies d’herbe en fonction de celui de bosquetet de boisement :

plot3(donneesfeu(:,2),donneesfeu(:,3),donneesfeu(:,4),’.’)xlabel(’nombre d”incendies de bosquet’)ylabel(’nombre d”incendies de boisement’)zlabel(’nombre d”incendies d”herbe’)title(’Comparaison des feux de bosquet, boisement et herbe’)

39

Page 44: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 4 – GraphiquesApplications à l’analyse de données et à l’analyse fréquentielle

Figure 4.11 – Représentation 3D des incendies de bosquet, boisement et herbe

Que pouvez-vous conclure sur la relation entre les feux de bosquet, de boisement et d’herbe ?

Dans MATLAB il existe d’autres types de graphique non présentés ici, tels que bode, loglog,semilogx, semilogy (pour des échelles logarithmiques), stairs, contour, polar, ... (voir l’aidede MATLAB).

40

Page 45: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Leçon 5

Résolution de systèmesApplications à l’électricité et à

l’hydrodynamique

Objectifs

– Résoudre un système linéaire– Rechercher les racines d’un polynôme– Rechercher les zéros d’une fonction non linéaire– Illustrer et appliquer ces notions à l’électricité et à l’hydrodynamique

5.1 Résolution d’un système linéaire sous forme matricielle

On considère le circuit électrique représenté à la figure 5.1.

R1

R3R

2

R5 R

6

R4

R8

R7

V1

V2

V3

i1

i2

i3

i4

Figure 5.1 – Circuit électrique

Déterminez l’intensité du courant circulant dans chaque résistance, avec les données suivantes :R1 = 20 Ω, R2 = 12 Ω, R3 = 15 Ω, R4 = 7 Ω, R5 = 16 Ω, R6 = 10 Ω, R7 = 10 Ω, R8 = 15 Ω,V1 = 22 V, V2 = 12 V et V3 = 44 V.

En appliquant la loi des noeuds pour les courants et la loi des mailles pour les tensions, le

41

Page 46: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 5 – Résolution de systèmesApplications à l’électricité et à l’hydrodynamique

système d’équations suivant est obtenu :

V1 −R1i1 +R3(i3 − i1)−R2(i1 − i2) = 0

−V2 +R6(i4 − i3)−R4(i3 − i2)−R3(i3 − i1) = 0

V − 3−R8i4 −R7(i4 − i2)−R6(i4 − i3) = 0

R4(i3 − i2) +R7(i4 − i2)−R5i2 +R2(i1 − i2) = 0

Ce système peut être réécrit sous forme matricielle :V1

−V2V3

0

︸ ︷︷ ︸

V

=

R1 +R2 +R3 −R2 −R3 0

−R3 −R4 R3 +R4 +R6 −R6

0 −R7 −R6 R6 +R7 +R8

R2 −(R2 +R4 +R5 +R7) R4 R7

︸ ︷︷ ︸

R

i1

i2

i3

i4

︸ ︷︷ ︸

I

L’intensité des courants i1, i2, i3 et i4 est donnée par :

I = R−1V

La fonction MATLAB inv (help inv) permet d’inverser une matrice carrée dont le détermi-nant est différent de 0. Essayez d’inverser les matrices A = [11; 22] et B = [123; 456].

Ecrivez un script MATLAB qui permet de résoudre le système d’équations linéaires précédentet de donner la valeur des intensités i1, i2, i3 et i4, à l’aide de la fonction inv.

5.2 Recherche de zéros d’une fonction non linéaireLa longueur d’onde d’une vague est la distance entre le sommet d’une vague et le sommet dela vague suivante.

En hydrodynamique, l’équation de cette longueur d’onde peut être déterminée. Dans le casd’un tsunami, une formulation simplifiée peut être la suivante :

f(L) = L− gT 2

2πtanh(

2πd

L) = 0

L représente la longueur d’onde (en m), g = 9.81 m/s2 l’accélération de la pesanteur, T = 2880s la période et d = 4000 m la profondeur de l’eau (caractéristique de l’Océan Indien).

Dans un nouveau fichier-M, entrez les différentes constantes g, T et d.Créez un vecteur L de 1 à 106, par pas de 1.Entrez l’expression de f donnée ci-dessus. En MATLAB la fonction tangente hyperbolique esttanh.

MATLAB retourne le message d’erreur suivant :

??? Error using ==> mldivideMatrix dimensions must agree.Error in ==> vague at 9f = L - g*T^2/(2*pi)*tanh(2*pi*d/L);

42

Page 47: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 5 – Résolution de systèmesApplications à l’électricité et à l’hydrodynamique

A votre avis, quel est le problème dans l’écriture de f ?

L’opération / doit s’effectuer sur chaque élément du vecteur L et non pas sur le vecteur lui-même. Pour cela, on fait précéder l’opérateur par un point :

f = L - g*T^2/(2*pi)*tanh(2*pi*d./L);

Représentez graphiquement f(L).Par lecture sur la figure, déterminez pour quelle valeur de L, la fonction f s’annule.

5.2.1 Racines d’un polynôme

La fonction tanh(x) peut être approximée par x− x3

3. Dans ce cas, la fonction f devient :

f(L) ≈ L− gT 2

(2πd

L− 1

3

(2πd

L

)3)≈ 0

En multipliant par L3, il vient :

f(L) ≈ L4 − gT 2

(2πdL2 −

(2πd

)33

)≈ 0

Cette équation est celle d’un polynôme en la variable L, de degré 4, dont on cherche les racines.La fonction roots (help roots) permet de calculer les racines d’un polynôme. Cette fonctionprend en argument un vecteur colonne contenant les coefficients du polynôme, du plus granddegré au plus petit degré.

Créez un vecteur colonne contenant les coefficients du polynôme et déterminez ses racines,à l’aide de la fonction roots.Pour quelle valeur de L, la fonction f s’annule-t-elle ?

5.2.2 Recherche par dichotomieLa recherche dichotomique d’un zéro d’une fonction f consiste à choisir un intervalle dans lequelse situe le zéro, puis à le couper en deux et à tester si ce découpage se situe à droite ou à gauchedu zéro. L’opération est répétée jusqu’à se rapprocher du zéro recherché. L’algorithme d’unerecherche dichotomique est le suivant :

– choisir un intervalle [a; b] dans lequel commence la recherche du zéro, tel que f(a) et f(b)soit de signe opposé ;

– définir la précision ε souhaitée sur la recherche du zéro (par exemple, ε = 10−4) ;– définir l’écart initial ecart = b− a ;– tant que ecart > ε, répéter les opérations suivantes :

. calculer xm =a+ b

2;

. calculer f(xm) ;

43

Page 48: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 5 – Résolution de systèmesApplications à l’électricité et à l’hydrodynamique

. si f(xm) = 0, alors xm est le zéro de f ;

. si f(xm)× f(a) < 0 (le zéro est plus petit que xm) alors b = xm ;

. si f(xm)× f(a) > 0 (le zéro est plus grand que xm) alors a = xm ;

. calculer le nouvel écart b− a.Créez un script MATLAB qui permet de rechercher par dichotomie, le zéro de la fonction f(L).

5.2.3 Fonction fzero

La fonction MATLAB fzero permet de trouver le zéro d’une fonction f (help fzero). Sa syn-taxe est x=fzero(f,x0), avec f la fonction dont on recherche le zéro et x0 une valeur prochedu zéro utilisée comme valeur de départ pour la recherche. On peut aussi utiliser la syntaxesuivante : x=fzero(f,[a b]), avec [a b] un intervalle qui contient le zéro.

La fonction f dont on cherche le zéro va être écrite dans une fonction MATLAB.

Ecriture d’une fonction MATLAB

1. Créez un nouveau fichier-M.La 1ère ligne de ce fichier doit obligatoirement être :

function [sortie1, sortie2, ...] = nomfonction(entree1,entree2, ...)

Pour l’exemple étudié :

function f = onde(L)

onde est le nom de la fonction. Elle prend en argument L et retourne f.

2. Un commentaire peut être ajouté pour décrire la fonction :

% La fonction onde décrit l’équation de la longueur d’onde d’un tsunami%Fonction écrite par Prénom NOM

3. Le code de la fonction peut ensuite être écrit :

g = 9.81;T = 2880;d = 4000;f= L - g*T^2/(2*pi)*tanh(2*pi*d./L);

4. Enregistrez votre fichier. Par défaut, MATLAB vous propose le nom onde.m pour votrefichier car le fichier de votre fonction doit porter le même nom que la fonction. Enregistrezdonc votre fichier sous le nom onde.m.

Une fois votre fonction écrite, le fichier onde.m doit ressembler à ceci :

44

Page 49: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 5 – Résolution de systèmesApplications à l’électricité et à l’hydrodynamique

function f = onde(L)% La fonction onde décrit l’équation de la longueur d’onde d’un tsunami%Fonction écrite par Prénom NOMg = 9.81;T = 2880;d = 4000;f= L - g*T^2/(2*pi)*tanh(2*pi*d./L);

Pour exécuter votre fonction, dans un autre fichier-M, créez le vecteur L et appelez votre fonc-tion :

L = [1:10^6];f = onde(L);

Dans la fenêtre de commande de MATLAB, tapez :

help onde

Le commentaire inscrit dans le fichier onde.m apparaît.

Fonction fzero

La fonction fzero prend en argument le nom de la fonction dont on cherche le zéro, précé-dée de @, et l’intervalle dans lequel la recherche doit être effectuée ([1 10^6]).Pour l’exemple, la syntaxe est :

Lzero = fzero(@onde,[1 10^6])

Comparez les valeurs du zéro obtenues par les différentes approches précédentes.

45

Page 50: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Leçon 6

Equations différentiellesApplications diverses

Objectifs

– Résoudre une équation différentielle d’ordre 1 à l’aide de la fonction ode45– Résoudre une équation différentielle d’ordre supérieur à 1 à l’aide de la fonction ode45– Illustrer par différentes applications

6.1 Equation différentielle d’ordre 1

Le coeur humain se contracte plus de 100 000 fois par jour(environ 80 battements par minute). Lorsqu’il ne remplitplus correctement son rôle, un stimulateur cardiaque arti-ficiel, ou pacemaker (voir figure 6.1), est implanté dans lacage thoracique, pour forcer le muscle cardiaque à battrerégulièrement, en lui envoyant de petites impulsions élec-triques. Le stimulateur contient une batterie et un sys-tème électronique.

Figure 6.1 – Stimulateurcardiaque - corps en titane,

5cm de large, 6mmd’épaisseur, 30g

Sou

rce:www.m

edtron

ic.com

Le stimulateur peut être représenté par le circuit RC de la figure 6.2. Dans une première phase,l’interrupteur est en position 1 et le condensateur C est rapidement chargé à travers la résistanceR1. Dans une deuxième phase, l’interrupteur est dans la position 2 et le condensateur se déchargelentement à travers R2. Dès que la différence de potentiel atteint une valeur prédéterminée parle cardiologue, le circuit de déclenchement T envoie une impulsion au coeur.

46

Page 51: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 6 – Equations différentiellesApplications diverses

R1

C vc(t)E

i(t)

T

1 2

R2

coeur

Figure 6.2 – Circuit électrique du stimulateur cardiaque

R1 = 1 ΩR2 = 1.7 MΩC = 470 nFE = 5.7 V

Donnez la constante de temps τ1 de la phase de charge du condensateur.Rappelez l’équation différentielle régissant la phase de charge du condensateur (le condensateurest initialement déchargé).Donnez l’expression de la tension vc(t), en résolvant analytiquement l’équation différentielle.

Créez, dans un nouveau fichier-M, une fonction contenant votre équation différentielle :

function dvc = charge(t,vc)dvc= ...

Pour résoudre une équation différentielle avec MATLAB, la fonction ode45 peut être utilisée.Sa syntaxe est la suivante :

[T,Y]=ode45(@nomfonction,[t0 tf],y0)

nomfonction est le nom de la fonction dans laquelle l’équation différentielle en y(t) est définie,[t0 tf] représente l’intervalle d’intégration et y0 la condition initiale y à l’instant t = 0.Dans un autre fichier-M, résolvez l’équation différentielle sur l’intervalle [0 10−5] :

[T,Vc]=ode45(@charge,[0 10^-5],vc0)

Tracez l’évolution temporelle de la solution analytique vc(t) et celle de la solution numériqueVc(t). Comparez.

Donnez la constante de temps τ2 de la phase de décharge du condensateur et comparez cettevaleur à celle de τ1.Rappelez l’équation différentielle régissant la phase de décharge du condensateur.Donnez l’expression de la tension vd(t), en résolvant analytiquement l’équation différentielle.Dans un nouveau fichier-M, écrivez une fonction contenant l’équation différentielle régissant laphase de décharge.Résolvez l’équation à l’aide de la fonction ode45, sur l’intervalle [10−5 4].Tracez l’évolution temporelle de la solution analytique vd(t) et celle de la solution numériqueVd(t). Comparez.

47

Page 52: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 6 – Equations différentiellesApplications diverses

Quel est le nombre d’impulsions que ce stimulateur cardiaque envoie par minute au cœur du

patient si le condensateur se décharge jusqu’à la valeurE

2?

6.2 Equation différentielle d’ordre 2 et suspension d’unevoiture

La suspension d’une voiture peut être décrite de façonsimplifiée par un système masse-ressort amorti (voir fi-gure 6.3), régi par l’équation différentielle suivante :

md2z(t)

dt2+ c

dz(t)

dt+ kz(t) = c

du(t)

dt+ ku(t)

z(t) représente le déplacement de la caisse, m = 500 kgla masse de la caisse, k = 5 × 104 N/m la raideur duressort, c = 2 × 103 Ns/m un coefficient caractérisantl’amortisseur et u(t) caractérise le profil de la route.

Figure 6.3 – Modèle simplifiéd’une suspension d’un quart

véhicule

On souhaite résoudre cette équation différentielle afin d’obtenir l’évolution temporelle du dépla-cement de la caisse, selon différents profils de route, à l’aide de la fonction ode45 de MATLAB.Pour cela, il faut réécrire l’équation différentielle du 2nd ordre sous la forme d’un systèmed’équations différentielles du 1er ordre de la forme :

dx1(t)dt

= f1(x1(t), x2(t))

dx2(t)dt

= f2(x1(t), x2(t))

Pour cela, on introduit des variables intermédiaires x1(t) et x2(t) telles que :

x1(t) = z(t)dx1(t)dt

=dz(t)

dt= x2(t)

dx2(t)dt

=d2x1(t)

dt2=

d2z(t)

dt2=

1

m

(cdu(t)

dt+ ku(t)− cdz(t)

dt− kz(t)

)

=1

m

(cdu(t)

dt+ ku(t)− cx2(t)− kx1(t)

)

48

Page 53: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 6 – Equations différentiellesApplications diverses

On obtient le système d’équations différentielles du 1er ordre :

dx1(t)dt

= x2(t)

dx2(t)dt

=1

m

(cdu(t)

dt+ ku(t)− cx2(t)− kx1(t)

)

Dans un nouveau fichier-M, créez une fonction qui va contenir le système d’équations différen-tielles précédent :

function dx = suspension(t,x)

Comme le vecteur x possède 2 composantes x(1) et x(2), le vecteur dx possède aussi 2 com-posantes, dx(1) et dx(2). Il faut le préciser à MATLAB avant de définir les équations diffé-rentielles. Pour cela, on crée un vecteur dx de la dimension souhaitée, qui contient uniquementdes zéros (fonction zeros, voir Leçon 2, help zeros).Il faut aussi définir les constantes m, k et c et le profil de la route u(t). Dans un premier temps,u(t) est un échelon d’amplitude 1, u(t) = 1 (route plate) :

dx = zeros(2,1);m = 500;c = 2*10^3;k = 5*10^4;u = 1;

Ecrivez les équations différentielles dans la fonction :

dx(1) = x(2);dx(2) = (k*u - k*x(1)-c*x(2))/m;

Dans un autre fichier-M, résolvez l’équation différentielle à l’aide la fonction ode45 sur l’inter-

valle [0 20] avec les conditions initiales z(0) = 0 (position initiale de la caisse) etdz(0)

dt= 4

(vitesse initiale de la caisse de 4m/s) :

[T,Z]=ode45(@suspension,[0 20],[0 4])

Tracez l’évolution temporelle du déplacement de la caisse.

Déterminez l’évolution temporelle du déplacement de la caisse pour les différents profils deroute représentés sur la figure 6.4.

49

Page 54: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 6 – Equations différentiellesApplications diverses

t (s)

u(t)

0 10 20

1

Différents profils de la route

t (s)

u(t)

0 10 20

1

5

Figure 6.4 – Différents profilsde la route

t (s)

u(t)

0 8 20

1

5 12

2

Différents profils de la route

Les différents profils u(t) peuvent être définis à partir d’une combinaison d’échelons et d’éche-lons retardés dans le temps. En MATLAB, il existe la fonction heaviside (help heaviside)qui permet de représenter un échelon d’amplitude 1.Définissez u(t) à l’aide de la fonction heaviside.

Comparez les différents déplacements de la caisse obtenus selon les profils. Commentez.

6.3 Application : dynamique d’une population

L’évolution de deux espèces de population du type proie-prédateur (lapins-renards ou sardines-requins, par exemple), qui sont en compétition, sur un territoire, peut être décrite par le systèmed’équations différentielles suivant :

dx1(t)dt

= a11x1(t)− a12x1(t)x2(t)dx2(t)dt

= a21x1(t)x2(t)− a22x2(t)

x1(t) et x2(t) représentent, respectivement, l’évolution de l’espèce 1 (proie) et de l’espèce 2(prédateur). Les coefficients aij sont positifs et leur signification est la suivante :– a11 : taux de natalité des proies ;– a12 : taux de mortalité des proies due aux prédateurs ;– a21 : taux de natalité des prédateurs ;– a22 : taux de mortalité des prédateurs.

On suppose que l’espèce 1 (proie) possède une quantité illimitée de nourriture et de ressourceset ses individus ne sont pas en compétition entre eux. L’espèce 2 (prédateur) se nourrit exclusi-vement des individus de l’espèce 1, qui sont en nombre limité (compétition entre les individusde l’espèce 2). L’espèce 1 croit exponentiellement en l’absence des prédateurs. L’espèce 2 décroîtexponentiellement en l’absence des proies.

Résolvez l’équation différentielle et représentez graphiquement l’évolution des proies et desprédateurs, pour les valeurs suivantes : a11 = a12 = a21 = 1, a22 = 0.5 et x1(0) = x2(0) = 2.

50

Page 55: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 6 – Equations différentiellesApplications diverses

Commentez les résultats obtenus.Essayez différentes valeurs des paramètres a11, a12, a21 et a22. Commentez et concluez.

51

Page 56: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Leçon 7

Application : étude d’un segway

Objectifs

– Appliquer les différentes notions abordées précédemment (fonction, boucle, graphiques en 2Det 3D, ...)

– Simuler différents scénarios d’utilisation du segway

7.1 Description du segway

On s’intéresse à l’étude d’un gyropode segway (www.segway.fr). La figure 7.2 représente lemodèle simplifié du segway (figure 7.1). Pour avancer, le promeneur doit se pencher en avant, àun angle α par rapport à la verticale, plaçant le centre de gravité au point mg. Pour simplifierle modèle, le centre de rotation de la roue est située au sol.

Figure 7.1 – Segway

@Im

ageww

w.se

gway

.fr

α

Figure 7.2 – Schéma simplifié d’unsegway

52

Page 57: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 7 – Application : étude d’un segway

7.1.1 Forces en jeu

D’après le schéma simplifié de la figure 7.2, les forces suivantes sont mises en jeu :

– Poids−→P = m−→g = −mg sin (θ)−→x −mg cos(θ)−→y

– Réaction du sol−→R = FT

−→x + N−→y (FT permet de faire avancer le segway et N permet demaintenir le promeneur sur le sol)

– Résistance de l’air au déplacement−→F air = −Fair

−→x , avec Fair =1

2ρv2ACd

– Résistance au roulement−→F rol = −Frol

−→x , avec Frol = CRmg

Le paramètre A représente la surface frontale de l’ensemble segway+promeneur. La surfacefrontale du segway est estimée à 0.2 m2. Celle du promeneur, notée Ap et exprimée en m2, estestimée par une formule (formule de Morsteller), de la façon suivante :

Ap =2

5

√h×mp

3600A = 0.2 + Ap

avec h la taille du promeneur en cm et mp sa masse en kg.

Le coefficient de résistance au roulement CR dépend du type de pneu utilisé (bias, radial).Il est fonction de la vitesse v et est donné par le constructeur de pneu.

Les paramètres utilisés sont donnés dans le tableau suivant :

Paramètre Signification Unité

ρ Masse volumique de l’air 1.225 kg/m3

v Vitesse du segway m/s

A Surface frontale de l’ensemble segway+promeneur m2

Cd Coefficient de traînée 1.5

m Masse de l’ensemble segway+promeneur kg

θ Angle d’inclinaison de la route rad

CR Coefficient de résistance au roulement

g Accélération de la pesanteur 9.81 m/s2

h Taille du promeneur cmTableau 7.1 – Paramètres utilisés dans l’étude mécanique du segway

D’après la première loi de Newton, la somme des forces est nulle : Σ−→F =

−→0 . Pour la composante

−→y , cela revient à avoir N = mg cos(θ). Pour la composante −→x , on a :

FT = Fair + Frol +mg sin(θ)

53

Page 58: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 7 – Application : étude d’un segway

7.1.2 Alimentation du segway

Le segway est alimenté par des batteries. L’efficacité de la conversion de l’énergie électrique enénergie mécanique est mesurée par le rendement des batteries ηB et le rendement de propulsionηp, donnés respectivement par :

ηB =Pelec

Pideal

, ηp =Pmech

Pelec

où Pideal est la puissance électrique idéale délivrée par la batterie, Pelec la puissance électriquereçue par le moteur et Pmech la puissance mécanique. Cette dernière est donnée par :

Pmech =d

2FTΩ

avec d le diamètre de la roue (en m) et Ω la vitesse angulaire de la roue en rad/s.

Le rendement de l’ensemble est donné par :

η = ηB × ηp =Pmech

Pideal

7.2 Calcul de l’énergie électrique nécessaire

Le but de cet exercice est de trouver la quantité d’énergie électrique Ebat nécessaire dans labatterie pour parcourir 16 km à la vitesse constante de 20 km/h. L’énergie est donnée par :

Ebat = Pideal × t

Pour cela, on considère les valeurs suivantes :– masse du promeneur : mp = 80 kg ;– taille du promeneur : h = 180 cm ;– masse de la batterie : mbat = 9 kg ;– masse du segway (sans la batterie) : mseg = 29 kg ;– diamètre de la roue : d = 48 cm ;– angle d’inclinaison de la route : θ = 0 ;– rendement : η = 0.5 ;– coefficient de résistance au roulement : CR = 0.0136 + 0.04× 10−6 × (v × 3.6)2.

Ecrivez une fonction qui convertit une vitesse v donnée en km/h en m/s.Ecrivez une fonction qui détermine la surface frontale A de l’ensemble segway+promeneur, enfonction de la masse mp et de la taille du promeneur h.Ecrivez une fonction qui permet de déterminer la force FT en fonction de A, v, Cd, m et θ.Ecrivez une fonction qui calcule la vitesse angulaire Ω en fonction de la vitesse v et du diamètrede la route d.En utilisant ces différentes fonctions, déterminez la puissance mécanique Pmech, puis la puissanceélectrique des batteries Pideal et en déduire l’énergie électrique Ebat nécessaire pour parcourir16 km.

54

Page 59: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 7 – Application : étude d’un segway

7.3 Calcul de la distance parcourue

On souhaite étudier la distance parcourue par le segway selon la masse du promeneur. Pourcela, on fait varier la masse du promeneur de 40 à 110 kg (par pas de 1). On considère la valeurde l’énergie électrique Ebat, calculée à la section 7.2.

Calculez le temps de parcours obtenu selon la masse du promeneur. Donnez ce temps en mi-nutes. Calculez la distance correspondante, parcourue pendant ce temps, en km.Représentez graphiquement la distance parcourue en fonction de la masse du promeneur.

A présent, en plus de la masse du promeneur, on souhaite étudier l’influence de la vitessesur la distance parcourue par le segway. Pour cela, on fait varier la vitesse de parcours de 1km/h à 20 km/h (par pas de 1).Calculez la distance parcourue pour chaque vitesse, en fonction de la masse du promeneur.Représentez la distance parcourue en fonction de la masse du promeneur et de la vitesse. Pourcela, utilisez la fonction MATLAB mesh (help mesh), avec la syntaxe suivante :mesh(vecteur_masse,vecteur_vitesse,vecteur_distance)

7.4 Nombre de batteries et distance parcourue

Si on double le nombre de batteries dans le segway, l’énergie électrique fournie sera égalementdoublée, permettant ainsi d’augmenter la distance parcourue par le segway. La relation entrela masse des batteries et l’énergie stockée dans ces batteries est supposée linéaire. Dans cettepartie, on s’intéresse à l’effet d’un grand nombre de batteries sur la distance parcourue par lesegway. Pour cela, on fait varier la masse des batteries de 1 kg à 3000 kg. Il est évident que3 tonnes de batteries dans un segway n’est pas réaliste, mais étudier des cas extrêmes peutdonner des résultats intéressants pour analyser le problème.

On considère une vitesse constante de 20 km/h et un promeneur de masse 80 kg. On considèrela valeur de l’énergie électrique Ebat calculée à la section 7.2, pour une masse de batterie de 9kg. L’énergie fournie par kg est ainsi Ebat/9. Par conséquent, pour une masse mbat, l’énergie Efournie sera :

E =Ebat

9×mbat

Calculez la distance parcourue par le segway pour chaque masse de batteries. Représentezgraphiquement la distance parcourue en fonction de la masse des batteries.

7.5 Profil du terrain

On considère, à présent, que le terrain présente un relief (montées et descentes), représenté surla figure 7.3.

55

Page 60: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 7 – Application : étude d’un segway

0 0.5 1 1.5 2x 104

0

200

400

600

800

1000

1200

1400

1600

1800

2000

Distance en m

Altitude en m

Relief du terrain

Figure 7.3 – Profil du terrain

Sous MATLAB, ce relief est créé à partir des vecteurs x (distance) et y (altitude) suivants :

x = [0:1000:20000];y = [50, 70, 150, 130, 80, 80, 80, 10, 50, 50, 10, 140, 200, 200, 250, 305, 160,150, 150, 150, 100];

Représentez graphiquement ce profil de terrain sous MATLAB.

Le schéma de la figure 7.4 représente l’inclinaison pour un segment de la route.

Figure 7.4 – Inclinaison de la route

Calculez l’angle θ d’inclinaison de la route et la distance ds du segment de la route, pour chaquesegment du profil de terrain donné à la figure 7.3.

56

Page 61: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 7 – Application : étude d’un segway

L’énergie initiale est celle calculée à la section 7.2 (valeur de Ebat, pour une masse constante de9 kg). L’énergie dE requise pour chaque segment du profil est donnée par :

dE = Pideal × dt = Pideal ×dsv

On considère la masse du promeneur à 80 kg et une vitesse constante de 20 km/h. Déterminezl’énergie dE requise pour chaque segment.Que remarquez-vous pour cette énergie ?

On considère que dans une montée, le segway consomme de l’énergie alors que dans une des-cente, il n’en consomme pas.Quelle est la distance parcourue par le segway jusqu’à épuisement de l’énergie des batteries ?Comparez cette valeur à celle utilisée dans la section 7.2.

7.6 Freinage récupératifOn souhaite déterminer la distance de parcours du segway si un système de freinage récupératifest utilisé. Pour tout véhicule, un temps non négligeable est passé à freiner, en particulier pourdes parcours en ville. Un système de freinage récupératif consiste à récupérer l’énergie cinétiqueperdue au cours de la phase de freinage, et à la stocker dans des batteries.

Dans l’étude du segway, on considère que 20% du temps est passé à freiner. Le rendementpour la conversion de l’énergie mécanique en énergie électrique sera considéré à 50%. Cela si-gnifie que pendant la phase de freinage, 50% de 20%, soit 10%, sont efficaces pour produirede l’énergie mécanique en énergie électrique. Cette dernière est ensuite convertie en énergiemécanique pour faire avancer le segway, avec un rendement de 0.5, soit 50% de 10%, ce quireprésente 5% au total.La distance totale dtotal ainsi parcourue est donnée par :

dtotal = dinit + drecup

avec dinit la distance initiale et drecup la distance parcourue grâce au système de freinage récu-pératif. Cette dernière est donnée par (voir figure 7.5) :

drecup = 0.05dinit + 0.052dinit + 0.053dinit + . . .

d_init 0.05 x d_init

0.05 x 0.05 x d_init

0.05 x 0.05 x 0.05 x d_init

. . .

Figure 7.5 – Distance totale parcourue par le segway

57

Page 62: Initiation à Matlab - univ-lorraine.frw3.cran.univ-lorraine.fr/perso/marion.gilson/Homepage... · 2013-10-21 · Partie1–Généralitésetpriseenmain >> whos Name Size Bytes Class

Partie 7 – Application : étude d’un segway

La distance totale ainsi parcourue est donnée par :

dtotal = dinit + 0.05dinit + 0.052dinit + 0.053dinit + . . .

dtotal = dinit(1 + 0.05 + 0.052 + 0.053 + . . .)

On peut montrer que la distante totale peut s’écrire, de façon équivalente, sous la forme :

dtotal = dinit ×a

1− r, avec a = 1 et r = 0.05

La distance initiale dinit est celle obtenue pour une batterie fournissant une énergie électriqueEbat, obtenue dans la section 7.2 (vitesse constante de 20 km/h).Donnez la distance initiale de parcours du segway.Déterminez la distance totale parcourue par le segway si un système de freinage récupératif estactif.Donnez la distance drecup parcourue grâce au système de freinage récupératif.

58