Title: Programmer avec Matlab I
1Programmer avec Matlab I
- Savoir-faire de lécole doctorale 268 Langages et
langues - Université Paris III
- 31 janvier 2006
- Présenté par Martine Toda
- martine.toda_at_excite.co.jp
2Mise 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.
3Préambule
4Pourquoi programmer ?
- Parce quil nexiste pas de logiciel qui permet
de faire ce quon 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
5Les 5 étapes de la programmation
- 0. Identification du problème
- Subdivision du problème en tâches simples et
indépendantes - Planification des programmes en pseudo-code
- Traduction en langage de programmation (ici,
cest Matlab) - Commenter ce code au fur et à mesure
- Tester le programme par petits bouts et traquer
les bugs
6Exemple
- Je veux créer un programme qui me permette de
faire un test de perception (ABX) - Organigramme du programme (subdivision en tâches
simples)
7Exemple
- Pseudo-code
- Programme création dun 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
8Pourquoi utiliser Matlab ? (1)
- Cest 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é à lanalyse du signal de
parole - Il existe un module spécialisé danalyse du
signal (et de limage) - Plusieurs fonctions prédéfinies (analyse
spectrale, filtrage, etc.)
9Pourquoi 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 dinterfaces pour analyser des données
variées - Ex. Alignement de données acoustique et de
données articulatoires
10Introduction à la programmation avec Matlab
11Où est installé Matlab
- Au labo C
- Au labo de phonétique (certaines machines)
- À Bièvres ?
12Démarrer Matlab
- Lancement
- Répertoire courant
- Ligne de commande (langage interprété)
- Fichiers programme (.m)
- Fichiers de données (.mat)
- Laide et les démos
- Programming and Data Types
13Principes de la programmation
- Un programme est une suite dinstructions
- Les instructions contiennent des opérateurs, des
mots-clefs ou des fonctions - Les instructions doivent respecter la syntaxe (de
Matlab) - Lunité qui compose les instructions est
lexpression. - Lexpression peut contenir un littéral, une
variable, une fonction (et ses arguments le cas
échéant) ou une combinaison de ceux-ci. - Lexpression évaluée va renvoyer une valeur.
14Expressions
- 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 dutiliser les noms de
fonction préexistantes) - Fonctions (avec ou sans argument) trouvemax,
plot(x, y) - Opérateurs et mots clés gt - exit
if-else-end - Programming and Data Types M-File Programming
Operators
15Quelques 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é
- gt
- Opérateurs logiques
-
16Quelques mots-clef
- If else end
- Break
- Exit
- Function
- Pour connaître la liste exhaustive, taper
iskeyword
17Les fonctions prédéfinies dans Matlab
- MATLAB Functions Functions - By Category
- MATLAB Functions Functions - Alphabetical List
- Les fonctions quon crée soi même sutilisent
exactement comme les fonctions prédéfinies.
18Donné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
19Démonstration 1
- Ligne de commande
- Appel dun programme
- Opérateurs syntaxiques de base
- Matrices et cellules
- Quest-ce qui est quoi (variable, fonction,
mot-clé, chaîne de caractère) ? - A1 3 5 9, A1 3 5 9 A, plot(A), close
- BA B
- 13 13
- C1 3 5 8 A-C AC plot(A, C), plot(A, C,
r) - Dceci est un test D
- D(1), D(6), D(111), D(1end)
- Enum2str(A)
- F1 2 3 4 5 6 7 8 9, F(2,3), GA, C , HA
C - Iceci, est, une, cellule, I2,
I1(4)
20Boucles
- Les boucles permettent ditérer les mêmes
opérations plusieurs fois sans les écrire
plusieurs fois dans le programme - if else end si sinon
- for iab end pour
- while true (break) end tant que
- switch case end pour tel ou tel cas
21Dé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)
22Lecture et écriture de fichiers
- Entrée-sortie standard
- disp, input
- Fichier de données
- load, save
- Fichier son
- wavread, wavewrite
- Fichier texte
- fopen, fclose -gt demonstration demofopen
- fgetl, strtok, sscanf, findstr, strcmp
fidfopen(articulatorydata.txt), fgetl(fid)
23Créer des figures avec Matlab
- plot
- paramètres
- subplot
- axes
- figures
- handles
- callback
- uicontrol
24La 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, )
25Laffichage des données à lintérieur des axes
(différent de axis)
- Démonstration axes
- Paramètres (title, fontsize, position, xlim,
ylim, xlabel, ylabel, ) MATLAB Functions Axes
Properties - gca
26plot (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 daffichage 3D graf3d
27Curve fitting
- Régression linéaire et coefficient de corrélation
- Approximation polynomiale, fonctions spline
28Données acoustiques X données articulatoires
- figure
- hold on
- for i160 plot(MSP(i,2),volpal(i,2),'marker','o'
) end
29Démonstration
30(No Transcript)
31Exercices
32Exercice 1
- Afficher sous forme de graphique des données
contenues dans un fichier texte. (TF1.txt) - Parcourez un document texte structuré
(articulatorydata.txt) et faites la liste pour
lentrée forme de la langue pour chacune des
consonnes, /s/, lalvéolopalatale (c) et la
palatoalvéolaire ou rétroflèxe (sh). - 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)
33Exercice 2
- Créez un programme avec Matlab qui permet de
générer automatiquement un ensemble de fichiers
de fonction daire sur un continuum. - Rappel les 5 étapes de la programmation
340. 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 laire relative de deux
tubes qui simulent un conduit vocal sans toucher
à leur longueur. - Je veux que laire totale soit constante afin de
simuler le volume constant de la langue.
351. Subdivision en tâches simples
- Boucles me permettant dobtenir un continuum
- Ouverture de fichiers texte en écriture
- Affichage des fonctions daire générées pour
vérifier si elles correspondent bien à ce que je
veux
36- 2. Pseudo-code
- 3. Traduire en Matlab
- 4. Commenter
- 5. Débuguer
37Exercice 3
- Créez un programme avec Matlab qui permet de
présenter des stimuli dans un ordre aléatoire et
denregistrer la réponse de lutilisateur (dans
un protocole ABX, par exemple). - rand input wavread
- Rappel les 5 étapes de la programmation
38(No Transcript)
39Fonctions avancées pour phonéticiens
40Traitement du signal 1Analyse spectrale avec
Matlab
- dft (fft)
- psd
- fenêtres
- autres méthodes
- échelle des fréquences
- rééchantillonage
41Le son
- fréquence déchantillonage, longueur et durée
- fréquence Nyquist
- le fichier wav (-1 1)
- demonstration demoson() demoson_tous
42Estimation spectrale
- Signal Processing Toolbox Statistical Signal
Processing Spectral Estimation Method - demospectre(s1)
43Fenêtrage
- Signal Processing Toolbox Special Topics Windows
44spectrogramme
45Traitement du signal 2Filtrage et lissage
- filtres
- curve fitting
- coefficient de corrélation
- lpc
- ar
- cepstral smoothing
- autres méthodes
46Le 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
47Démonstration
- lpc demolpc
- filtrage demoderiv
48Lissage cepstral
49Exercice 4
- Pour des données de mouvement dun articulateur,
calculer la vitesse et laccélération. (Ou pour
un signal électroglottographique, la vitesse et
laccélération de louverture et de la fermeture
des cordes vocales) - Afin dy voir plus clair, filtrer le signal pour
enlever le bruit
50Créer une interface avec Matlab
- guide démonstration
- modification du code généré automatiquement
51Alignement de données variées
- Transformation du code de specgramdemo