Initiation ` a Matlab et Octave (en autonomie)
Damien ROQUE
<[email protected]>
8 avril 2013
Afin de faciliter la prise en main de l’environnement de simulation, les binˆomes doivent effectuer cette premi`ere s´eance de travaux pratiques en autonomie. Un compte rendu sera r´edig´e et fera l’objet d’une
´
evaluation.
Compte tenu du nombre limit´e de licencesMatlab au sein de l’ENSIMAG, il est recommand´e de travailler sur le logiciel libreOctave dont le langage de programmation est similaire. Ce logiciel est install´e par d´efaut sur le serveur telesun.imag.fr ou sur la distribution Ensilinux. Les ´el`eves peuvent aussi utiliser leurs ordinateurs personnels `a condition de s’assurer d’une configuration semblable `a celle des machines de l’´ecole.
Le d´ebutant sousMatlab est invit´e `a se munir du Guide d’introduction `a Matlab et Octave1. En parti- culier, il est indispensable de savoir rechercher des fonctions et d’acc´eder `a leur documentation.
La simulation num´erique est utilis´ee dans de nombreux domaines de l’ing´enierie. Dans le cas particulier du traitement du signal, il est n´ecessaire d’avoir conscience des limitations suivantes. Alors qu’un signal analogique x(t) d´epend d’une variable t continue (t ∈ R), un signal discret x[k] d´epend d’une variable k discontinue (k∈Z). De plus, lorsquex[k] prend un nombre fini de valeurs, il est qualifi´e de signal num´erique.
Seule cette classe de signaux se prˆete aux traitements informatiques.
SousMatlab, un signal num´eriquex[k] de dur´ee finie peut se repr´esenter sous la forme d’un vecteur ligne.
Une telle repr´esentation est toutefois incompl`ete car elle ne contient aucune information sur la position des ´echantillons. Il est alors n´ecessaire d’introduire un vecteur indice. Prenons l’exemple d’un signal quelconque x[k] d´efini sur l’intervalle [−2; 4] ; il se d´efinit et s’affiche de la mani`ere suivante.
k=[−2 −1 0 1 2 3 4 ] ; x =[0 1 2 1 0 3 5 ] ; stem( k , x ) ;
La description du vecteur indice est souvent triviale, dans la mesure o`u elle peut s’obtenir `a l’aide d’une suite num´erique. L’affichage du signalxindic´e parkimplique que ces deux vecteurs soient de mˆeme longueur.
1. Disponible surhttps://intranet.ensimag.fr/KIOSK/Matieres/4MMSTN/Ressources/guide_matlab_octave.pdf
1
1 Manipulations sur les vecteurs indices
Nous approfondissons dans un premier temps les manipulations des vecteurs indice. Ces derniers peuvent ˆ
etre vus comme des fonctions lin´eaires discr`etes ou des suites num´eriques. Les r´eponses aux quatre questions suivantes doivent pr´esenter des extraits code source pertinents.
Question 1
Cr´eer le vecteur indicevect1d´ecrivant l’intervalle de -20 `a 20 avec un pas ´egal `a 0,01.
Question 2
A partir de` vect1, cr´eer le vecteur indice vect2comportant toutes les valeurs positives devect1.
Question 3
A partir de` vect1, cr´eer le vecteur indice vect3 d´ecrivant l’intervalle de -20 `a 20 avec un pas ´egal `a 0,1 (d´ecimation par facteur 10).
Question 4
A partir de` vect1, cr´eer le vecteur indice vect4d´ecrivant l’intervalle de -40 `a 40 avec un pas ´egal `a 0,01 (concat´enation).
2 Analyse de complexit´ e
Nous souhaitons construire un signal num´erique de la forme x[k] =ei2πkλ avecλ= 0,01 et 0≤k≤1000.
Principalement deux m´ethodes existent pour cr´eer un tel signal. La premi`ere emploie une boucle et la seconde utilise une fonction d’un vecteur indice.
Question 5
Cr´eer dans une variableX1le signalx[k] `a l’aide d’une boucleforen calculant un ´echantillon par it´eration.
Afficher dans la mˆeme figure graphique la partie r´eelle et imaginaire dex[k]. Commenter.
Question 6
Cr´eer dans une variableX2le mˆeme signalx[k], sans utiliser de boucle, en d´efinissant le vecteur indice k.
V´erifier que l’on retrouve bien le mˆeme signal qu’avec la m´ethode pr´ec´edente.
Question 7
Utiliser les fonctions tic et toc pour mesurer le temps de calcul n´ecessaire `a la cr´eation de X1 et X2.
Commenter.
3 Dissection d’une fonction
La fonction suivante permet de cr´eer un signal myst´erieux. Les param`etres de la fonction sont conditionn´es parn1< n0< n2avecni∈Z.
function [ x , n ] = f o n c t i o n m y s t e r e ( n0 , n1 , n2 ) n=[ n1 : n2 ] ;
x = [ ( n−n0 ) ==0];
Question 8
Mettre en œuvre lafonctionmystere? D´ecrire pr´ecis´ement les ´etapes de son ex´ecution.
2
Question 9
A l’aide de la` fonctionmystere, cr´eer un vecteur indice d´ecrivant l’intervalle de 1 `a 256 avec un pas unitaire.
Pr´esenter le code source utilis´e. Trouver une alternative plus simple pour r´esoudre le mˆeme probl`eme.
4 Repr´ esentation d’un signal pseudo-analogique
Bien queMatlabsoit incapable de repr´esenter des signaux analogiques, il est possible d’utiliser des techniques d’affichage qui donnent l’illusion d’une continuit´e entre des points faiblement espac´es d’un signal num´erique (sur´echantillonnage et interpolation lin´eaire). En simulation num´erique, ces signaux sont parfois appel´es signaux `a temps pseudo-continu ousignaux pseudo-analogique.
Soit le signal analogique suivant :
s(t) =Acos(2πν0t) avec A= 2 V etν0= 200 Hz.
Le signal `a temps pseudo-continu bas´e surs(t) reste en toute rigueur discret. Il se note donc s[l] avecl∈Q tel que |ln−ln−1| ≈ 0, n ∈ Z. Rappelons que les vecteurs de Matlab sont exclusivement indic´es par des entiers naturel non-nuls, il faut donc g´en´erer explicitement le vecteur indice pour la plupart des signaux `a temps pseudo-continu.
Question 10
Cr´eer un vecteur indice appropri´e puis construire le signal `a temps pseudo-continus[l] avecMatlab sur 10 p´eriodes. Le nombre de points sera choisi de telle sorte que le signal soit suffisammentlisse lors d’une visualisation avec la fonctionplot. Donner le code source et faire apparaˆıtre des grandeurs physiques sur les axes du graphique (Volt pour l’amplitude, secondes pour le temps).
5 Filtrage num´ erique
Soit la fonction ´echelon unit´eu[k] d´efinie par :
u[k−k0] =
1 sik≥k0
0 sik < k0. avec {k, k0} ∈Z Nous souhaitons filtrer un signalx[k] de type porte de largeurM, d´efini par :
x[k] =u[k]−u[k−M] avec k∈ZetM ∈N∗.
La r´eponse impulsionnelleh[k] du filtre est ´egalement une porte de largeurN d´efinie par : h[k] =u[k]−u[k−N] avec k∈ZetN ∈N∗.
Rappelons la d´efinition du produit de convolution discret :
y[k] =
+∞
X
l=−∞
h[l]x[k−l].
Question 11
Calculer la sortie du filtrey[k] pourM = 30 etN = 10. Si besoin, s’aider d’un graphique pour comprendre le raisonnement.
En prenant un signal de longueurM = 30 ainsi qu’une r´eponse impulsionnelle `aN = 10, effectuer le filtrage en utilisant la fonctionconv. Repr´esenter ensuite dans la mˆeme fenˆetrex[k],h[k] ety[k] `a l’aide desubplot.
Question 12
Quel est le support dey[k] (l’exprimer en fonction du support de x[k] eth[k]) ?
3