Top Banner
This document contains text automatically extracted from a PDF or image file. Formatting may have been lost and not all text may have been recognized. To remove this note, right-click and select "Delete table".
36

Initial Signal Matlab.pdf

Jun 26, 2015

Download

Documents

Uploaded from Google Docs
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Initial Signal Matlab.pdf

This document contains text automatically extracted from a PDF or image file. Formatting may have been lost and not all text may have been recognized.

To remove this note, right-click and select "Delete table".

Page 2: Initial Signal Matlab.pdf
Page 3: Initial Signal Matlab.pdf

Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008TABLE DES MATIERES_____________________________________________________________________________________________________TP I INITIATION au logiciel MATLAB 03Manipulation des variablesProgrammation : Les scripts, les fonctionsPartie théorique_____________________________________________________________________________________________________TP II NOTIONS de SIGNAL NUMERIQUE 09ConvolutionSignaux harmoniquesBruit : Rapport signal sur bruitPartie théorique_____________________________________________________________________________________________________TP III TRANSFORMEE de FOURIER discrète 13EchantillonnageRepliement du spectreTFDPartie théorique_____________________________________________________________________________________________________TP IV CALCUL et ANALYSE SPECTRALE 16Analyse par TFDFenêtres d’analyseRésolution fréquentielleAnalyse par autocorrélationPartie théorique_____________________________________________________________________________________________________TP V NOTIONS de TRAITEMENTS AUDIO 19Le système acoustique humainQualité des données audioLe son sous matlab_____________________________________________________________________________________________________TP VI MODULATIONS NUMERIQUES 24Modulations analogiques (amplitude-phase)Modulations numériques (QAM-PSK)Partie théorique_____________________________________________________________________________________________________1

Page 4: Initial Signal Matlab.pdf
Page 5: Initial Signal Matlab.pdf
Page 6: Initial Signal Matlab.pdf

Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008_____________________________________________________________________________________________________TP VII ESTIMATION et DETECTION 27Estimation des deux premiers momentsDétection par moyennageDétection par intercorrélationPartie théorique_____________________________________________________________________________________________________TP VIII FILTRAGE NUMERIQUE 29Analyse de filtresSynthèse de filtresFiltrage d’harmoniquesRéduction de bruitPartie théorique_____________________________________________________________________________________________________TP IX NOTIONS de TRAITEMENT d’IMAGES 32Lecture et écriture d’une imageOpérations sur les imagesFiltrage d’une imageSeuillage d’une imageDétection de contours_____________________________________________________________________________________________________2

Page 7: Initial Signal Matlab.pdf
Page 8: Initial Signal Matlab.pdf
Page 9: Initial Signal Matlab.pdf

Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008TP I INITIATION au logiciel MATLAB_____________________________________________________________________________________________________Ce TP a pour but d’apprendre à utiliser le logiciel Matlab afin de pouvoir développerdes applications simples en traitement du signal.Entrer d’abord la commande diary(‘initiation’) pour garder les traces de votretravail ; à la fin de la séance entrer la commande diary() ;I- Manipulation des variablesOn distingue les variables scalaires et les variables vectorielles (matricielles engénéral).1- Variables scalairesDans un premier temps on génère trois variables scalaires a, b et c de la manièresuivante :>> a=2 ;>> b=3;>> c=4 ;On peut consulter la valeur d’une variable en entrant son nom :>> aLa réponse serait :a=2Cela signifie que les valeurs des variables sont mémorisées automatiquement avecleurs noms.2- Taille des variables dans la mémoireLa taille d’un scalaire de type « double » est 8 Bytes = 8 Octets = 64 Bits3- Commandes de base :• who et whos :Affiche la taille mémoire et types de toutes les variables utilisées.• cd :Affiche le répertoire (directorie) où vous opérez en ce moment.• what, dir :Affiche la liste les noms des fichiers contenus dans le répertoire actuel.• help nom_fonction :Donne un descriptif de la fonction et ses arguments d’entrée sortie.4- Opérations sur les variables>>d=a+b+c>>e=a+b*c>>f=(a+b)*c3

Page 10: Initial Signal Matlab.pdf
Page 11: Initial Signal Matlab.pdf
Page 12: Initial Signal Matlab.pdf

Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008>>g=(a/b)*c>>h=a^25- Les matrices et les variables vectoriellesMatlab est optimisé pour l’usage matriciel : Eviter les formulations non matricielles.• [ a b c ] est un vecteur ligne.• [a ;b ;c ;] est un vecteur colonne.• V’ est le transposé du vecteur V• u=1:5 est le vecteur [1 2 3 4 5] (de même que [1 :5] et (1 :5).• t=0 :2 :15 est le vecteur [0 2 4 6 8 10 12 14]• sin(t) est le vecteur [sin(0) sin(2) …sin(14)]• zeros(1,N) est le vecteur ligne nul à N éléments.• Ones(1,N) est le vecteur ligne à N éléments égaux à 1.6- Opérations sur les vecteurs§ Il faut respecter les dimensions des vecteurs et matrices.Génération automatique d’un vecteurV=début:pas:fin;§ On définit une valeur de début : début§ On définit une valeur de fin : fin§ On définit un pas de progression linéaire ou logarithmique(incrémentation) : pas ;§ si le pas n’est pas spécifié, il est égal à 1 automatiquement.>>v3=1:10>>v4=1:-0.5:-1>>debut=0;fin=256;pas=8;>>v5=debut:pas:fin>>debut=0;fin=2*pi;pas=0.1; où pi désigne le nombre 3.14…>>v5=debut:pas:finUne liste des fonctions les plus courantes est disponible dans l’aide en ligne entapant la commande (elfun désigne elementary functions : sin, cos, log, exp…)>>help elfun7- Les matricesSaisir la matrice 3x3 suivante :a=[1 2 3 ;4 5 6 ;7 8 9]Noter que deux lignes sont séparées par un point virgule.Si vous entrez la commande a(:) vous obtenez le vecteur colonne [1 4 7 2 5 8 3 6 9]’.La fonction eig donne les valeurs propres de la matrice a.4

Page 13: Initial Signal Matlab.pdf
Page 14: Initial Signal Matlab.pdf
Page 15: Initial Signal Matlab.pdf

Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008zeros(N) est la matrice nulle NxN, eye(N) est la matrice identité NxN.II- ROGRAMMATION1-LES SCRIPTSPlutôt que de taper les commandes au clavier les unes après les autres poureffectuer une tâche, ce qui vous oblige à refaire la même chose à chaque utilisationde cette tâche, il est préférable de grouper les commandes dans un fichier àextension .m, ainsi tous les programmes auront pour nom name.m. Il suffit alors detaper name pour que la tâche s’exécute.Exemple 1 :Créez un fichier qui s’appelle essai1.m, qui génère un signal sinusoïdal x(t) de npoints, puis visualisez le à l’aide de la commande plot(x).§ Etape 1 : édition du fichier par la commande : edit essai1.m§ Etape 2 : taper les commandes suivantes dans la fenêtre d’édition :%ce fichier génère et affiche une sinusoïdet=0:0.1:2*pi; % t est le vecteur temps avec un pas d’échantillonnage 0.1x=sin(t); % le signal x est un vecteur de même taille que le vecteur tplot(t,x) ;grid on % dessine à l’écran x en fonction de tRemarques :1- Le texte débutant par % est un commentaire de votre choix, il est ignoré par lelogiciel. Vous pouvez supprimer ces commentaires, mais ils sont utiles lorsqu’on aplusieurs programmes.2- Chaque instruction doit être suivie d’un point virgule.§ Etape 3 : Sauvegardez le fichier dans le répertoire en cours ;§ Etape 4 : Exécutez le programme en entrant la commande suivante :>>essai12- Utilitaires graphiques§ L’instruction title(‘titre de la courbe ou la figure’) ajoute un titre à lafigure visualisée.§ xlabel(‘titre des abscisses’) affiche un titre horizontal suivant x.§ ylabel(‘titre des ordonnés’) affiche un titre vertical suivant y.§ grid on et grid off quadrille ou non le graphique.Exemple 2 :Générez,à l’aide d’un programme prog1.m, deux périodes des deux signauxx(t)=cos(t) et y(t)=sin(t) et visualisez les deux signaux sur une même figure, l’une enrouge et l’autre en bleu à l’aide de la fonction plot(t,x,’b’,t,y,’r’). Mettre une légende.5

Page 16: Initial Signal Matlab.pdf
Page 17: Initial Signal Matlab.pdf
Page 18: Initial Signal Matlab.pdf

Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008Exemple 3 :Visualisez sur une même figure,à l’aide d’un programme prog2.m, les quatresignaux cos(t), sin(t),log10(t) et exp(t) en utilisant la fonction subplot(.,.,.) qui divisel’écran en quatre sous figures : (2,2,1),(2,2,2),(2,2,3) et (2,2,4).>>subplot(2,2,1),plot(t,x);Saisie d’une donnée au clavier :Pour saisir une variable x à partir du clavier, on utilise l’instruction :x=input(‘x=’) ;Affichage d’un message à l’écran :Pour afficher à l’écran un message personnel suivi d’un retour à la ligne :fprintf(‘message personnel \n’) ;Affichage de la valeur d’une variable :Pour afficher à l’écran la valeur d’une variable x :fprintf(‘x=’%d) ;III- LES FONCTIONSSi plusieurs de vos programmes personnels utilisent en commun une listed’instructions, il est préférable de regrouper ces instructions sous forme d’unprogramme indépendant. A chaque besoin on appelle le dit programme par sonnom : c’est une fonction.Une fonction possède des paramètres d’entrée et des paramètres de sortie, dont lasyntaxe de déclaration est la suivante :function [sortie1,sortie2,…]=nom_fonction(entrée1,entrée2,…)Le programme matlab correspondant à la fonction doit porter le même nom que lafonction : nom_fonction.mExemple 1 :Calcul de la moyenne arithmétique m d’un vecteur v de dimension n :m= 1

∑=La fonction moyenne.m comportera les instructions suivantes :function resultat=moyenne(v,n); %déclaration de la fonctionr=0; %initialisation de la moyennefork=1:n r=r+v(k);endresultat=r/n;On note la présence de la boucle itérative :6

Page 19: Initial Signal Matlab.pdf

nni1v(i )

Page 20: Initial Signal Matlab.pdf
Page 21: Initial Signal Matlab.pdf
Page 22: Initial Signal Matlab.pdf

Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008for indice=debut:pas:fininstruction ;endQui est équivalente à :indice=debut ;(B) instruction;debut=debut+pas;si debut=fin aller à B;Mise en œuvre de la fonction>>moyenne(1:100,100)Comparer avec la fonction matlab mean.Exemple 2 :Créez une fonction puissance.m qui donne la valeur efficace s et la puissancemoyenne p d’un signal.x étant un vecteur de composantes x(i) , i=1..n, la valeur efficace de x est :s= p = 1n

∑ni=17x2 (i ) Testez cette fonction sur un signal sinusoïdal d’amplitude A et de période 1.Comparer avec la fonction matlab std.Exemple 3 : Diagramme de bode.1- Créez une fonction spectre(f,H) qui affiche à l’écran le spectred’amplitude 20log|H(f)| et le spectre de phase Arg(H(f)) en fonction de fen Hertz avec indication du titre de chaque courbe ; Les paramètresd’entrée sont le vecteur fréquence f=0:fmaxet le vecteur complexe H.Fonctions conseillées :abs(x),angle(x) et log10(x).2- Utilisez la fonction spectre dans un programme indépendant myfilter.mpour tracer les diagrammes de Bode des filtres passe bas et passe hautdont les fonctions de transferts sont définies par :H

Page 23: Initial Signal Matlab.pdf

1j.f1+. fc(f)=11+j. ffcfc, H2(f)=jffcétant la fréquence de coupure demandée par le programme et fournie parl’utilisateur à l’exécution.Exemple 4 : vitesse de convergence d’une sérieConsidérons la série en N suivante (qui converge vers exponentiel de x) : ff

Page 24: Initial Signal Matlab.pdf
Page 25: Initial Signal Matlab.pdf
Page 26: Initial Signal Matlab.pdf

Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008s(x , N ) =

∑Nkk=08xkRéaliser :• Une fonction factoriel(n) qui calcule le factoriel d’un entier naturel.• Une fonction somme(x,n) qui calcule s(x,n).• Un programme prog3.m qui calcule la valeur de l’exponentiel de 2 avecune précision (incertitude relative) supérieure à 95% (incertitude inférieur à5%).PARTIE THEORIQUE1. En utilisant!

e j . n α = [ e j . α ]n, Trouver les expressions de cos(na) et sin(na) pourn=2 et n=3.2. De même retrouver les expressions de cos(a+ß) et sin(a+ß).

3. Calculer la somme∑∞n=1s (n ) , avec s(n)=21n+j31

Page 27: Initial Signal Matlab.pdf

n 4. Même question pour s(n)= (3j)n5. Trouver les complexes z tels que : z N =z − N 6. trouver les racines cubiques de 1.

7. Calculer le produit infini ∏∞=1e j πn8. Calculer =

∫ /

2 nπ2/I n0π/2 nx dx J n0nx dx ________________________________________________________________________Le compte rendu de la séance doit être rédigé sur la feuille qui vous estfournie et doit contenir en plus de la partie théorique :Un listing des programmes :prog1.mprog2.mpuissance.mspectre(f,H)myfilter.mfactoriel(n)somme(x,n)prog3.msin( ) et =

∫ cos( )

Page 28: Initial Signal Matlab.pdf
Page 29: Initial Signal Matlab.pdf
Page 30: Initial Signal Matlab.pdf

Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008TP II NOTIONS DE SIGNAL NUMERIQUE_________________________________________________________________________________________________________________I- DéfinitionUn signal numérique s(k) est une suite de N échantillons régulièrement espacés deTesecondes :s(0,),s(Te),s(2Te),…,s((N-1)Te)La grandeur Fe=1/Teest appelée fréquence d’échantillonnage : c’est le nombred’échantillons par seconde.Le nombre d’échantillons N est le plus souvent une puissance de 2 : N= 2 p où p estun entier naturel.Signal numérique100806040200Te 2Te 3Te 4Te kTekTe (secondes)II- Visualisation du signal sPour visualiser s(kTe) correctement à l’écran, il faut préciser l’axe du temps t=k Te :t=0:Te:(N-1)*Te;plot(t,s);Remarque : la commande plot(s), dessine s(k) en fonction de 1,2,…,N ; c’est-à-direTe

Page 31: Initial Signal Matlab.pdf

=1, ce qui est rarement le cas.Exemple 1 : Signal rectangulaire• On considère le signal rectangulaire Rec(k) égal à l’unité pourk=1…N/4 et nul pour k=N/4+1…N.Pour N=512 et Te=0.01s visualisez à l’aide d’un programmeRec(k) en précisant sur la figure l’axe du temps avec l’unité demesure.• Visualisez deux périodes de l’onde carrée de période 2πfournie par Matlab square(t) pour plusieurs pasd’échantillonnage : t=0 :pas :4*piExemple 2 : convolution de deux signauxx(k) et y(k) étant deux signaux numériques de même durée N.Te, la convolution de xet y est un signal z(k) de durée (2N-1).Tedéfini par :

z(k)=x*y(k)=∑km=9x( m ) y ( k −m + )1 , k=1…2N-11

Page 32: Initial Signal Matlab.pdf
Page 33: Initial Signal Matlab.pdf
Page 34: Initial Signal Matlab.pdf

Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008Remarque :§ Le nombre de points de z(k) est généralement N+M-1 où N et Mdésignent le nombre d’échantillons respectifs de x et y.§ L’expression générale de la convolution est un peu différente si lavariable temps débute à zéro au lieu de un (ce qu’exige Matlab).1- Réalisez un programme prog1.m qui effectue la convolution de x(k)=Rec(k) aveclui-même et visualisez Rec(k) et z(k) résultant. On prendra N=512.Observez la forme de z(k) ainsi que sa largeur par rapport à celle de Rec(k). A quelinstant k, z(k) est-il maximal ? Quel est la valeur de ce maximum ? Interpréter.2- comparer z(k) et le résultat de z2=conv(x,x)Exemple 3 : Signaux harmoniquesOn considère les deux signaux :s1

(t)= ∑4k=121k.sin( 2 π2. kft ) s2101

(t)= ∑kk4=1(− )1 k.cos( 2 π. k

Page 35: Initial Signal Matlab.pdf

. f . t ) Avec : N=1024, f12=50Hz, Fe=8Khz pour s1et f2=1/2 Hz , Fe=100Hz pour s2,.Générez et visualisez en même temps, à l’aide d’un programme prog2.m, les deuxsignaux s1et s2.§ Quelles remarques pouvez vous faire sur la forme des signaux?§ Que constatez vous lorsque les sommations vont plus loin que 4?§ A quel type de signaux connus pouvez vous comparer les signauxgénérés (comparer à sawtooth (t) et square (t))?III- NOTION de BRUITLe bruit b(k) est défini comme étant un signal indésirable se mêlant additivement ouautrement à un signal s(t) qui intéresse l’observateur.Le model le plus fréquent de bruit de mesure de grandeurs physiques est le bruitblanc gaussien : c’est un bruit aléatoire b(k) dont les échantillons sont dé-corrélés(entendez par cela que même si on connaît b(k1), b(k2) reste aussi imprévisiblequ’avant).La fonction b=randn(1,N) permet de générer un vecteur bruit b de distributionpseudo normale (de Gauss) de taille N de moyenne nulle et d’écart type 1.Un coefficient multiplié par randn permet d’augmenter à volonté la puissance dubruit. Ainsi pour générer un vecteur bruit blanc de taille N, de moyenne m et d’écarttype σ la commande est :bruit= m+σ *randn(1,N);Dont la puissance est Pb= m 2 σ+ 2 (Puissance de la moyenne plus celle desfluctuations autour de cette moyenne).

Page 36: Initial Signal Matlab.pdf