Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é...

51
Programmer avec Matlab I Savoir-faire de l’école doctorale 268 Langages et langues Université Paris III 31 janvier 2006 Présenté par Martine Toda [email protected]

Transcript of Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é...

Page 1: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Programmer avec Matlab I

Savoir-faire de l’école doctorale 268 Langages et languesUniversité Paris III

31 janvier 2006Présenté par Martine [email protected]

Page 2: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Mise en garde

• Tous les exemples fournis ont été conçus dans un but pédagogique pour illustrer le fonctionnement de Matlab.

• Les aspects mathématique ou traitement du signal peuvent être inexacts.

• Vérifiez tout si vous souhaitez utiliser le matériel mis à disposition dans un but scientifique.

Page 3: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Préambule

Page 4: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Pourquoi programmer ?

• Parce qu’il n’existe pas de logiciel qui permet de faire ce qu’on veut– Ex. Affichage de données articulatoires alignées avec

les données acoustiques

• Automatisation de tâches répétitives– segmentation et étiquetage de corpus écrits, – calculs, – écriture de fichiers sur un continuum, – création de stimuli sur un continuum, – affichage de plusieurs résultats dans le même format

Page 5: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Les 5 étapes de la programmation

0. Identification du problème1. Subdivision du problème en tâches simples et

indépendantes 2. Planification des programmes en pseudo-code3. Traduction en langage de programmation (ici,

c’est Matlab)4. Commenter ce code au fur et à mesure5. Tester le programme par petits bouts et traquer

les bugs

Page 6: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Exemple

• Je veux créer un programme qui me permette de faire un test de perception (ABX)

• Organigramme du programme (subdivision en tâches simples)

Programme principalABX

Création destimuli

Présentation aléatoire

Interaction utilisateur

Sauvegarde des résultats

Page 7: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Exemple

• Pseudo-code :Programme « création d’un stimuli sur un continuum avec

deux paramètres »(commentaire : combiner la valeur du bruit de friction avec la valeur des formants)

boucle1[ pour un F2 qui va de 800 à 2000 Hz avec des intervalles de 50 Hz boucle2[ et pour un bruit de friction qui va de 5000 à

8000 Hz concaténer le bruit avec la transition formantique ]boucle2 ]boucle1

Page 8: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Pourquoi utiliser Matlab ? (1)

• C’est un logiciel de programmation facile à utiliser– Plusieurs fonctions prédéfinies pour analyser et

représenter des données : on peut faire des choses élaborées avec très peux de code

• Particulièrement adapté à l’analyse du signal de parole – Il existe un module spécialisé d’analyse du signal (et de

l’image)– Plusieurs fonctions prédéfinies (analyse spectrale,

filtrage, etc.)

Page 9: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Pourquoi utiliser Matlab ? (2)

• Création de belles figures– Figures stables (cf. Excel…) et esthétiques– Fonctions de lissages de courbes– Automatisation de la création de figures

• Création d’interfaces pour analyser des données variées– Ex. Alignement de données acoustique et de

données articulatoires

Page 10: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Introduction à la programmation avec Matlab

Page 11: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Où est installé Matlab

• Au labo C

• Au labo de phonétique (certaines machines)

• À Bièvres ?

Page 12: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Démarrer Matlab

• Lancement

• Répertoire courant

• Ligne de commande (langage interprété)

• Fichiers programme (.m)

• Fichiers de données (.mat)

• L’aide et les démos– Programming and Data Types

Page 13: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Principes de la programmation

• Un programme est une suite d’instructions• Les instructions contiennent des opérateurs, des mots-clefs

ou des fonctions• Les instructions doivent respecter la syntaxe (de Matlab)• L’unité qui compose les instructions est l’expression.• L’expression peut contenir un littéral, une variable, une

fonction (et ses arguments le cas échéant) ou une combinaison de ceux-ci.

• L’expression évaluée va renvoyer une valeur.

Page 14: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Expressions• Littéraux Programming and Data Types: M-File Programming: Data Types

• Nombres (type implicite)• Entiers 1, 40, 50394, -2,…• Flottants 0.0004, 4000.0,…• Décimaux 0.45, 4.6,…• 8 ou 16 bits, signés ou non signés

• Caractères ‘a’, ‘1’• Logiques True ou False

• Matrices, cellules et chaînes de caractères• Variables mmax, a, … (le nom doit commencer par une

lettre ; éviter d’utiliser les noms de fonction préexistantes)• Fonctions (avec ou sans argument) trouvemax, plot(x, y)• Opérateurs et mots clés = == > + - * ; : exit if-else-end

– Programming and Data Types: M-File Programming: Operators

Page 15: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Quelques opérateurs et caractères spéciaux

• Caractères spéciaux – () parenthèses– = affectation– , virgule– ; point virgule– % commentaire ou pour indiquer un format– : « jusqu’à »

• Opérateurs arithmétiques– + addition– - soustraction– * multiplication

• Opérateurs relationnels– == test d’égalité– >

• Opérateurs logiques– &– ~

Page 16: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Quelques mots-clef

• If … else … end

• Break

• Exit

• Function

• Pour connaître la liste exhaustive, taper iskeyword

Page 17: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Les fonctions prédéfinies dans Matlab

• MATLAB Functions: Functions - By Category

• MATLAB Functions: Functions - Alphabetical List

• Les fonctions qu’on crée soi même s’utilisent exactement comme les fonctions prédéfinies.

Page 18: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Données structurées

• Vecteurs et matrices• Chaînes de caractères• Cellules

• Comment faire référence à chacun des éléments () {}

• Opérations pour construire les matrices, chaînes et cellules [] {} vertcat() horzcat()

• MATLAB Functions: Functions - By Category: Data Types

Page 19: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Démonstration 1

• Ligne de commande• Appel d’un programme • Opérateurs syntaxiques de base• Matrices et cellules• Qu’est-ce qui est quoi (variable, fonction, mot-clé, chaîne de caractère…) ?

– A=[1 3 5 9], A=[1 3 5 9]; A, plot(A), close– B=A; B– ‘1’+’3’; 1+3– C=[1 3 5 8]; A-C; A==C; plot(A, C), plot(A, C, ‘r’) – D=‘ceci est un test’; D– D(1), D(6), D(1:11), D(1:end)– E=num2str(A)– F=[1 2 3; 4 5 6; 7 8 9], F(2,3), G=[A, C] , H=[A; C] – I={‘ceci’, ‘est’, ‘une’, ‘cellule’}, I{2}, I{1}(4)

Page 20: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Boucles

• Les boucles permettent d’itérer les mêmes opérations plusieurs fois sans les écrire plusieurs fois dans le programme

• if …else …end si … sinon …

• for i=[a:b] … end pour …

• while true … (break) … end tant que …• switch … case… end pour tel ou tel cas …

Page 21: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Démonstration

• Boucles • Initialisation des variables si nécessaire

• Couvrir tous les cas de figure : le cas général et les cas particuliers

– demonstration demoif(nombre) demofor demowhile demoswitch(1 ou ‘1’)

Page 22: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Lecture et écriture de fichiers

• Entrée-sortie standard– disp, input

• Fichier de données– load, save

• Fichier son– wavread, wavewrite

• Fichier texte– fopen, fclose -> demonstration demofopen– fgetl, strtok, sscanf, findstr, strcmp…

fid=fopen(‘articulatorydata.txt’), fgetl(fid)…

Page 23: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Créer des figures avec Matlab

plotparamètres

subplotaxes

figureshandlescallbackuicontrol

Page 24: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

La fenêtre ‘figure’

• Démonstration figure

• Paramètres (name, position, color) MATLAB Functions: Figure Properties

• gcf, get et set

• get(gcf, ‘position’)

• set(gcf, ‘position’, […])

Page 25: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

L’affichage des données à l’intérieur des ‘axes’ (différent de ‘axis’)

• Démonstration axes

• Paramètres (title, fontsize, position, xlim, ylim, xlabel, ylabel, ) MATLAB Functions: Axes Properties

• gca

Page 26: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

plot (et plot3)

• affiche un résultat (ouvre une fenêtre et crée des axes si nécessaire)

• Démonstration plot(A), plot(A, B)

• marqueurs et lignes ; propriétés : graf2d, hndlgraf

• Subplot

• exemple d’affichage 3D graf3d

Page 27: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Curve fitting

Régression linéaire et coefficient de corrélation

Approximation polynomiale, fonctions spline

Page 28: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Données acoustiques X données articulatoires

figure

hold on

for i=1:60; plot(MSP(i,2),volpal(i,2),'marker','o'); end

Page 29: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Démonstration

demoregression

Page 30: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.
Page 31: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Exercices

Page 32: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Exercice 1

a. Afficher sous forme de graphique des données contenues dans un fichier texte. (TF1.txt)

b. Parcourez un document texte structuré (articulatorydata.txt) et faites la liste pour l’entrée ‘forme de la langue’ pour chacune des consonnes, /s/, l’alvéolopalatale (‘c’) et la palatoalvéolaire ou rétroflèxe (‘sh’).

c. Reprendre les données acoustiques et articulatoires- afficher les différentes consonnes en couleurs différentes

MATLAB Functions: ColorSpec et avec des marqueurs différents MATLAB Functions: Line Properties

- afficher l’étiquette de la consonne (‘s’, ‘c’, ‘sh’) à la place du marqueur (MATLAB Functions: text)

Page 33: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Exercice 2

• Créez un programme avec Matlab qui permet de générer automatiquement un ensemble de fichiers de fonction d’aire sur un continuum.

• Rappel : les 5 étapes de la programmation

Page 34: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

0. Identification du problème

• Je veux un continuum mais je suis trop paresseuse pour écrire tous les fichiers à la main.

• De plus, comme je suis distraite, je ferais certainement des erreurs en le faisant à la main.

• Je veux faire varier l’aire relative de deux tubes qui simulent un conduit vocal sans toucher à leur longueur.

• Je veux que l’aire totale soit constante afin de simuler le volume constant de la langue.

Page 35: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

1. Subdivision en tâches simples

• Boucles me permettant d’obtenir un continuum

• Ouverture de fichiers texte en écriture

• Affichage des fonctions d’aire générées pour vérifier si elles correspondent bien à ce que je veux

Page 36: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

2. Pseudo-code

3. Traduire en Matlab

4. Commenter

5. Débuguer

Page 37: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Exercice 3

• Créez un programme avec Matlab qui permet de présenter des stimuli dans un ordre aléatoire et d’enregistrer la réponse de l’utilisateur (dans un protocole ABX, par exemple).

• rand input wavread…

• Rappel : les 5 étapes de la programmation

Page 38: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.
Page 39: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Fonctions avancées pour phonéticiens

Page 40: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Traitement du signal 1Analyse spectrale avec Matlab

dft (fft)psd

fenêtresautres méthodes

échelle des fréquencesrééchantillonage

Page 41: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Le son

• fréquence d’échantillonage, longueur et durée

• fréquence Nyquist

• le fichier wav ([-1 1])

• demonstration demoson() demoson_tous

Page 42: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Estimation spectrale

• Signal Processing Toolbox: Statistical Signal Processing: Spectral Estimation Method

• demospectre(‘s1’)

Page 43: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Fenêtrage

• Signal Processing Toolbox: Special Topics: Windows

Page 44: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

spectrogramme

• specgram specgramdemo

Page 45: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Traitement du signal 2Filtrage et lissage

filtrescurve fitting

coefficient de corrélationlpcar

cepstral smoothingautres méthodes

Page 46: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Le filtrage

• Enlever le bruit (ex. électromyographie)• Lisser les courbes dérivées (ex. données

articulatoires)• Signal Processing Toolbox: Special Topics:

Time-Domain Based Modeling• Signal Processing Toolbox: fdatool (et

fvtool pour visualiser le filtre)• Signal Processing Toolbox: sptool

Page 47: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Démonstration

• lpc demolpc

• filtrage demoderiv

Page 48: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Lissage cepstral

Page 49: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Exercice 4

• Pour des données de mouvement d’un articulateur, calculer la vitesse et l’accélération. (Ou : pour un signal électroglottographique, la vitesse et l’accélération de l’ouverture et de la fermeture des cordes vocales)

• Afin d’y voir plus clair, filtrer le signal pour enlever le bruit

Page 50: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Créer une interface avec Matlab

guide démonstration

modification du code généré automatiquement

Page 51: Programmer avec Matlab I Savoir-faire de l é cole doctorale 268 Langages et langues Universit é Paris III 31 janvier 2006 Pr é sent é par Martine Toda.

Alignement de données variées

• Transformation du code de specgramdemo