Vous êtes sur la page 1sur 18

Enseigner les

Sciences du Numrique avec


MATLAB et Simulink

Dcouvrez comment aborder les Sciences du Numrique avec


MATLAB et Simulink :

Langage et programmation,
Reprsentation binaire et oprations boolennes,
Acquisition et analyse dune image numrique,
Acquisition dun son,
Parcours de graphes,
Architecture des ordinateurs et communication rseau,
Programmation dun robot

2014 The MathWorks,


Inc.

Prambule
Introduction :
Ce livret est destin aux professeurs des collges et lyces enseignant la programmation et les
Sciences du Numrique.
Il prsente comment aborder les diffrents thmes du programme dInformatique et Sciences du
Numrique laide des logiciels MATLAB et Simulink.
Pour chacun de ces thmes :

Les objectifs pdagogiques du programme sont rappels,

Une App, un modle ou un programme est propos pour laborder,

Un jeu de questions est suggr pour exploiter ces programmes en classe,

Des lments de rponse sont donns en fin de manuel.

Ressources :

Site web acadmique: http://fr.mathworks.com/academia/lycees/


Site web pour lISN : http://fr.mathworks.com/academia/lycees/sisn.html
Ressources pour lenseignement: http://fr.mathworks.com/academia/classroomresources/index.html
Cibles matrielles supportes: http://fr.mathworks.com/academia/hardware/index.html
Didacticiels: http://fr.mathworks.com/academia/student_center/tutorials/index.html
Webinars acadmiques:
http://fr.mathworks.com/company/events/webinars/index.html?q=%2520sector:%2522Educati
on%2522

Dmarrage et installation
MATLAB App :
1.

Les programmes, Apps et modles dcrits dans ce livret peuvent tre tlchargs cette
adresse : http://www.mathworks.com/matlabcentral/fileexchange/47854

2.

Pour installer les Apps : cliquez sur Install App dans le bandeau MATLAB. Slectionnez le
fichier monApp.mlappinstall. Puis Install.

3.

Faire de mme pour le fichier DataAcquisition.mlappinstall

4.

Dans longlet Apps, cliquez sur la flche pour voir toutes les Apps.

5.

Double-cliquez sur lapp monApp :

Support Package pour Raspberry Pi et LEGO MINDSTORMS :


Pour se connecter et programmer les cartes Raspberry Pi et les robots LEGO Mindstorms EV3
et NXT depuis Simulink :
1.

2.

Dans le bandeau MATLAB, slectionnez


puis Get Hardware Support
Packages.
Slectionnez les supports packages requis et suivre la procdure dinstallation.

Langages et programmation avec


MATLAB (1/2)
Objectifs du programme :

Choisir un type de donnes en fonction dun problme rsoudre

Concevoir len-tte dune fonction, puis la fonction elle-mme

Exemple 1: Les types de donnes


1. MATLAB dtermine automatiquement
le type de donnes de vos variables
(double, char, boolen).
2. Tapez whos pour visualiser les
variables du workspace, leur type et la
taille quelles occupent en mmoire.
Sur combien doctets est stock un
entier? Un double? Un caractre?
3. La fentre workspace vous permet de
consulter ces mmes variables.
Pour en savoir plus sur les types de
donnes dans MATLAB.

Exemple 2: Concevoir len-tte dune fonction


1. Len-tte dune fonction myfun prenant
x1,...,xM en entre et renvoyant y1,...,yN
en sortie scrit :
function [y1,...,yN] = myfun(x1,...,xM)
1.

Le code Analyzer aide crire correctement lentte de sa fonction (variable dentre non utilise,
variable de sortie non affecte).

Pour en savoir plus

Vido : Introducing MATLAB fundamental data types

Vido : Programming and developing algorithms with MATLAB

Langages et programmation avec


MATLAB (2/2)
Objectif du programme :

Mettre au point un programme en le testant, en linstrumentant

Exemple 3: Correction des erreurs de


syntaxe facilite avec le Code
Analyzer.
Le Code Analyzer affiche les erreurs
et problmes potentiels de votre code,
ainsi que des amliorations possibles.
Il facilite la correction des erreurs et
donc lapprentissage de la syntaxe.
1.

2.

La fonction ci-contre contient


quatre erreurs de syntaxe.
Corrigez-les en vous aidant des
warnings et erreurs du Code
Analyzer.
Renommer la variable T_trie en
Ttrie dans tout le programme.
Modifiez la premire occurrence
puis appuyez sur Maj+Entre pour
renommer toutes les instances.

Exemple 4: Dbogage des programmes


Le dbogueur permet de :
positionner des points darrt et des
points darrt conditionnels (arrt si
une variable atteint une certaine
valeur) dans vos programmes.
Excuter le programme pas pas.
Visualiser les valeurs des variables de
manire interactive.

Reprsentation binaire et oprations


boolennes
Objectifs du programme :

Manipuler laide doprations lmentaires les trois units de base : bit, octet, mot

Exprimer des oprations logiques simples par combinaison doprateurs de base

Coder un nombre, un caractre au travers dun code standard


Exemple 1 : App de conversion entre types binaire, dcimal et caractre
( installer depuis le dossier
\DataTypeConversion)

Convertir 10 de :
Binaire binaire
Dcimal binaire
Caractre binaire
Hexadcimal binaire
Le rsultat est-il identique?

Que se passe-t-il lors de la conversion de 10 du type caractre au type binaire?


Retrouver le rsultat en 2 tapes en passant de :

Caractre dcimal en vous aidant de la table ASCII

Puis dcimal binaire

Exemple 2 : Opration boolennes avec Simulink


(modle dans \Boolean)
a
b

Choisir et relier les portes logiques


fournies dans le modle et remplir la
0
0
table de vrit.

NON
a

NON
b

(NON a) ET
(NON b)

((NON a)
OU
(NON b))

(a OU b)

Ralisez les oprations suivantes:

100012 ET 1000102

90

OU 100010

Numrisation dune image


Objectifs du programme:

Numriser une image sous forme dun tableau de valeurs


numriques

Modifier le format, la taille, le contraste ou la luminance


dimages numriques
3

5
2

Exemple : Acquisition dune image numrique


Tapez imaqtool linvite de commande MATLAB ou lancer lApp Image Acquisition
1.
Slectionner la camra
2.
Choisir la rsolution
3.
Slectionner lespace couleur (RGB ou niveau de gris)
4.
Lancer la Preview.
5.
Ajuster les paramtres de contraste, luminosit, exposition
6.
Pour chaque jeu de paramtres, lancez une acquisition
7.
Sauvegarder limage capture dans le Workspace de MATLAB ou dans un fichier (.MAT ou
format image).
8.
Pour analyser limage, choisir Image Tool.
9.
Vous pouvez galement dfinir une rgion dintrt dans limage (Onglet Region of Interest)
10. Faites lacquisition de plusieurs frames (une vido!). Pour cela, allez dans longlet Triggering
et modifiez Number of Triggers , mettre le nombre de frames enregistrer ou Infini si
vous souhaitez arrter lenregistrement manuellement.
11. Lancez/Arrtez lacquisition.
7

Analyse dune image numrique


Objectifs du programme :

Numriser une image sous forme dun tableau de valeurs numriques

Modifier le format, la taille, le contraste ou la luminance dimages numriques

Filtrer et dtecter des informations spcifiques

Exemple : Analyse et correction dune image numrique

1
1 2 3

Taper imtool linvite de commande MATLAB ou lancez lApp Image viewer.


1. Pixel region : Regarder les valeurs des pixels dans diffrentes rgions (claire, sombre).
Comment volue la couleur en fonction de la valeur du pixel?
2. Image information : Regarder les caractristiques de limage. Quelle est sa taille? La classe
de limage est uint8. Quest-ce que cela signifie? Sur combien de bits est cod chaque pixel?
Quelles sont les valeurs minimales et maximales que peuvent prendre les pixels? Quelles
sont les valeurs minimales et maximales que prennent les pixels sur cette image ?
3. Adjust contrast (pour les images en niveau de gris uniquement) Que reprsente
lhistogramme? Quelle valeur de pixel est la plus souvent reprsente ( peu prs)?
Dplacer le curseur de droite de 255 200. Puis cliquez sur Adjust data. Que sest-il pass
pour tous les pixels dont la valeur tait >200?
4. Rglez les paramtres comme ci-contre. Comment est devenue limage? Comment sappelle
ce type dimage? Combien de couleurs diffrentes y a-t-il dans limage?

Compression
Objectif du programme :

Utiliser un logiciel de compression

Exemple : Compression JPEG et facteur de qualit ( installer depuis le dossier


\JPEGCompression)
Lancez lApp Compression JPEG.
1. Charger une image (File>Open)
2. Mettre le facteur de qualit 100 et baisser le facteur de qualit progressivement. A partir
de quelle valeur vous remarquez une diffrence entre limage originale et limage
compresse? Noter cette valeur.
3. Continuer baisser le facteur de qualit. Dans quelles zones de limage la qualit se
dgrade-t-elle plus rapidement?
4. Est-ce que la taille du fichier et le facteur de qualit sont proportionnels?
5. Charger une nouvelle image.
6. Remettre le facteur de qualit 100 et baisser le facteur de qualit jusqu ce que vous
remarquiez une diffrence entre limage originale et limage compresse. Est-ce que la
valeur est la mme que celle note pour limage n1? Pourquoi?

Application du traitement des images :


Le tatouage numrique
Objectifs du programme :

Mettre un programme au point

Comprendre et expliquer ce que fait un algorithme

Filtrer et dtecter des informations spcifiques

Numriser une image

Exemple : Initiation au tatouage numrique ( installer depuis le dossier \Watermarking)


Le tatouage numrique (en anglais digital watermark) permet dajouter des informations
de copyright ou d'autres messages de vrification un fichier audio, vido, une image ou un
autre document numrique. Le message inclus dans le signal hte est un ensemble de bits,
dont le contenu dpend de l'application. Il peut sagir du nom du propritaire ou encore dune
forme de signature. Le nom de cette technique provient du marquage des documents papier et
des billets.
Dans le cas prsent, le message est converti en binaire puis stock dans la valeur des pixels
de limage. Le numro du bit et la composante couleur dans lesquels sont stocks le message
sont laisss au choix de lutilisateur.
Lancer lApp Watermarking
1. Charger une image
2. Entrer un message
3. Slectionner le numro de bit et la composante couleur qui stocke linformation.
4. Quel numro de bit faut-il choisir pour que le message soit peu visible? Pourquoi?
10

Acquisition dun son


Objectif du programme :

Numriser un son sous forme dun tableau de valeurs numriques


Exemple : Acquisition, numrisation et coute dun son ( installer depuis
http://www.mathworks.com/matlabcentral/fileexchange/44234-data-acquisition)

7
4

Lancer lApp Data Acquisition


1. Slectionner le type de device : AudioInput
2. Slectionner le microphone
3. Slectionner le type de mesure : audio
4. Slectionner le nombre de canaux
5. Crer une session dacquisition
6. Rgler les paramtres de lacquisition, en particulier la dure et la frquence
dchantillonnage Fs (ici 1s et 16kHz)
7. Lancer lacquisition en cliquant sur Collect Data
8. Une fois lacquisition termine, vous pouvez :

Zoomer sur le signal. Observer que le signal de parole est un signal pseudo-priodique.

9.
10.

11.
12.

Uitiliser le curseur pour relever les valeurs numriques du signal.

Quelle est la pseudo-priode du signal? En dduire la frquence


fondamentale du signal de parole?

Sauvegarder votre acquisition : File> Save>monfichier.mat


Dans MATLAB, tapez les commandes suivantes :

>> load monfichier

Les variables data et time sont charges dans le workspace

Double-cliquer sur data pour voir les valeurs.

Pour couter, taper soundsc(data, Fs)


Que se passe-t-il si vous choisissez une frquence
dchantillonnage plus faible ou plus leve que pour
lacquisition?

11

Algorithmes avancs : graphes


Objectifs du programme :

Recherche dun chemin dans un graphe par un parcours en profondeur (DFS) ou en largeur
(BFS)

Recherche dun plus court chemin par un parcours en largeur (BFS)

Exemple : App de parcours de graphes ( installer depuis le dossier \Graph)


Lancez lApp Graph Traverse
1. Crer la matrice sparse reprsentant votre graphe (doc sparse). Si la valeur de la matrice la
ligne i et la colonne j vaut a (a>0), cela signifie quil y a un arc orient entre les nuds i et j,
de poids a.
La matrice correspondant au graphe ci-dessus se construit avec la syntaxe suivante :
>>W = [.41 .99 .51 .32 .15 .45 .38 .32 .36 .29 .21];
>>G = sparse([6 1 2 2 3 4 4 5 5 6 1],[2 6 3 5 4 1 6 3 4 3 5],W)
Arc orient entre le nud 6 et le nud 2 de poids 0.41.
2. Sauvegarder la matrice dans le fichier graph.mat :
>> save graph.mat G
3.
4.

5.

Nud de dpart
Nud darrive
Poids

Dans lapp, charger le fichier du graph.mat.


Choisissez un algorithme :
Plus court chemin : slectionner le nud de dpart et le nud darrive

Parcours DFS ou Parcours BFS : slectionner le nud de dpart

Lancez lalgorithme en mode pas pas ou normal .


12

Architecture des ordinateurs et


rseaux (1/2)
Objectifs du programme :

Expliquer le rle des constituants dun ordinateur

Etablir une communication srielle entre deux machines

Dcrire une situation dadressage sur un type de rseau particulier


Exemple : Communication wifi entre deux cartes Raspberry Pi (modles dans
\RaspberryPiCommunicationWifi)
1. La Raspberry Pi est un micro-processeur. Identifier les diffrents constituants de la carte :

Mmoire

Processeur

Entrs et sorties audio

Port Ethernet

GPIO

Ports USB pour connecter divers priphriques

Video
out

Audio
out

Digital in/out

USB ports

(clavier, souris, webcam).

HDMI pour connecter un cran


HDMI

2.

Ethernet

Les modles ci-dessous permettent dtablir une communication dimage crypte entre
deux cartes Raspberry Pi par wifi :

Lmetteur (sender_crypt.slx): Fait lacquisition dune image (bouton poussoir),


encrypte limage et envoie limage vers le rcepteur
Bouton
poussoir

Webcam

Webcam

Bouton
poussoir

Dongle
wifi

Envoi trames UDP


par wifi

3.

4.

Emetteur : Double-cliquer sur le bloc crypt et analyser lalgorithme de cryptage.


Comment fonctionne-t-il? A quoi sert limage Jellyfish.png? Quel est le risque dune telle
mthode de cryptage?
Emetteur : Double-cliquer sur le bloc UDP Send. Quelle adresse IP doit-on donner? Quel
port?

13

Architecture des ordinateurs et


rseaux (2/2)
Objectifs du programme :

Expliquer le rle des constituants dun ordinateur

Etablir une communication srielle entre deux machines

Dcrire une situation dadressage sur un type de rseau particulier


Exemple : Communication wifi entre deux cartes Raspberry Pi
Le rcepteur (receiver_decrypt.slx): Reoit limage sous forme de trames, la remet en
forme, extrait limage crypte et laffiche.

Rception
trames UDB
par wifi
Affichage
image
dcrypte
sur cran
SDL
Dongle
wifi

Ecran SDL

5.

6.

Rcepteur : Double-cliquer sur le bloc UDP Receive. Quel port doit-on donner? Comment
retrouver la taille de la trame reue (data size) en fonction de la taille de limage initiale?
Rcepteur : Double-cliquer sur le bloc decrypt et analyser lalgorithme de dcryptage.
Comment fonctionne-t-il? Limage dcrypte correspond-elle exactement limage de
dpart?

14

Dcouverte dun systme numrique


et de sa programmation
Objectifs du programme :

Identifier les diffrents composants dun minirobot et comprendre leurs rles

Dcrire un systme vnements simple laide dune machine tats finis

Programmer dans un langage haut niveau un minirobot pour lui faire excuter une tche
complexe
Exemple 1 : Identifier les composants du LEGO Mindstorms

1.

2.

Quels sont les diffrents composants du LEGO


Mindstorms?
Retrouver dans la librairie Simulink Support
Package for LEGO MINDSTORMS les blocs
permettant dacqurir/denvoyer des donnes
aux diffrents composants du LEGO.

Exemple 2 : Programmer une suite dvnements sur le LEGO (Modle dans \LEGO)
Stateflow est une librairie intgre Simulink permettant de reprsenter une logique
vnementielle partir de machines dtats.
On fait raliser la suite dvnements suivant au LEGO :

Dmarrage lorsquon appuie sur le capteur tactile

Avance en ligne droite

Tourne droite en cas de prsence dun obstacle puis reprend sa trajectoire en


ligne droite
1. Ouvrir le modle lego.slx. Retrouvez les diffrents tats dcrits prcdemment. A quelle
distance de lobstacle commence-t-on tourner?
2. Modifiez les paramtres gomtriques (diamtre des roues, distance entre roues) pour
quils correspondent votre robot.
3. Modifiez le diagramme pour que le robot :

tourne gauche lorsquil rencontre un obstacle

sarrte lorsquon appuie de nouveau sur son capteur tactile.

sarrte lorsquil passe sur une zone rouge

15

Dcouverte dun systme numrique


et de sa programmation
Objectifs du programme :

Identifier les diffrents composants dun minirobot et comprendre leurs rles

Dcrire un systme vnements simple laide dune machine tats finis

Programmer dans un langage haut niveau un minirobot pour lui faire excuter une tche
complexe

16

Corrig
Langages et programmation avec MATLAB:
Exemple 1
2. Un entier est stock sur 1 octet, un double sur 8 octets, un caractre sur 2 octets.
Exemple 3
1. Programme corrig :
function [T_trie] = tri_insertion(T)
% Algorithme de tri par insersion
% T Tableau trier
% T_trie tableau tri

T_trie = T;
for i = 2:length(T)
x = T_trie(i);%valeur insrer au tour i
j = i;
while (j>1 && T_trie(j-1)>x)
T_trie(j)=T_trie(j-1);%dcalage des + grandes valeurs
j=j-1;
end
T_trie(j)=x;%Insrer dans la bonne case
end

Reprsentation binaire et oprations boolennes:


Exemple 1

10 en dcimal est cod 1010 en binaire et 10 en caractre est cod 01100010110000 en


binaire.

Chaque caractre de 10 (1 et 0) est converti. Le rsultat est la concatnation des


conversions de 1 et 0 de caractre binaire.

1 (char) -> 49 (ASCII) -> 0110001 (binaire)


0 (char) -> 48 (ASCII) -> 0110000 (binaire)
Par concatnation 10 (char) -> 01100010110000 (binaire)
Exemple 2

NON a

NON b

(NON a) ET (NON
b)

((NON a) OU
(NON b))

(a OU b)

(100012 ET 1000102) = (02)


9010 OU 1000102 = (0111 10102)
17

Corrig
Analyse dune image couleur
1.
2.

3.

4.

Plus la rgion est sombre, plus la valeur du pixel est faible.


Sur cet exemple, limage est de taille 240*320. Chaque pixel de limage est reprsent par un entier
non sign sur 8 bits. Les valeurs des pixels vont de 0 255 (28 -1). Pour les valeurs min et max sur
limage, regarder les donnes Minimum Intensity et Maximum Intensity.
Lhistogramme reprsente le nombre de pixels prenant chacune des valeurs possibles de 0 255.
Dans lexemple reprsent, la valeur la plus reprsente se situe autour de 160. Tous les pixels dont
la valeur tait suprieure 200 sont mis 255.
On a une image binaire (2 couleurs). Tous les pixels dont la valeur est infrieure 128 sont devenus
noirs et ceux dont la valeur tait suprieure sont devenus blancs.

Compression
3.

4.
6.

La qualit de limage se dgrade rapidement dans les zones de fortes variations spatiales des
valeurs des pixels. En effet, la compression JPEG utilise le fait que lil humain est peu sensible
aux changements rapides dintensit des pixels. Ainsi on reprsente en priorit les zones de
variation lente des pixels (dgrad par exemple) plutt que les zones de variation rapide.
Non.
Pas ncessairement. Cela dpend du type dimage. On notera une diffrence avec un facteur de
qualit beaucoup plus lev sur limage binaire dun carr par exemple. Alors quavec une photo, on
pourra opter pour une compression plus importante sans noter de diffrences visuelles.

Application du traitement des images : le tatouage numrique


4.

Le message sera peu visible si lon utilise le bit de poids faible car il est porteur de peu dinformation.

Acquisition dun son:


12.

Si la frquence dcoute est plus leve que la frquence dchantillonnage, le son sera jou plus
vite quil na t enregistr. Dans le cas contraire, il sera jou au ralenti.

Architecture des ordinateurs et rseaux


3.

4.
5.

6.

Lalgorithme de cryptage remplace les 4 bits de poids faibles de limage Jellyfish.png par les 4 bits
de poids fort de limage dont on a fait lacquisition. Dans une telle mthode de cryptage, on perd de
linformation.
On renseigne ladresse IP et le port du rcepteur.
On donne le mme port que pour lmetteur. La trame reue correspond la taille de limage (ici
120*160*3).
Lalgorithme de dcryptage isole les 4 bits de poids faible de limage reue et les dcale vers la
gauche pour quils deviennent les 4 bits de poids fort. Les 4 bits de poids faible sont mis 0. Les 4
bits de poids faible de limage de dpart sont perdus. Limage reue nest donc pas exactement
identique celle de dpart.

Dcouverte dun systme numrique et de sa programmation


1.

On tourne lorsque lon est moins de 20cm de lobstacle.

18