You are on page 1of 6

TP DEUG STPI 2ème Année

TP de traitement de signal

Travaux Pratiques De Traitement De Signal
Modalité de contrôle des connaissances : Compte-rendu de manipulation. Les étudiants veilleront à accorder une grande importance à la clarté des compte-rendus, à la rigueur des schémas, ainsi qu’à la pertinence des commentaires.
SIGNAUX DETERMINISTES

Sur l’exemples ci-dessous, on trouve des blocs qui représentent chacun une fonction. Le bloc « sine wave » par exemple est un générateur sinusoïdal que l’on va pouvoir visualiser a l’aide du bloc « scope » qui simule un oscilloscope.

Sine Wave

Scope

Q1) A l’aide des blocs de simulink, visualiser les signaux déterministes : 1. Echelon, rampe. 2. Signaux sinusoïdaux : sin, cos de période T = 10 s, 5 s. 3. Signaux aléatoires tels que les bruits par exemple. Pour réaliser ces signaux, utiliser les blocs qui se trouvent dans simulink / sources (pour les différents signaux) et le scope qui se trouve dans simulik / sinks. (« Double-cliquez » sur le bloc source afin de modifier ses paramètres.) Q2) Réaliser à l’aide de simulink le signal x(t)= 2*sin(2*pi*f1*t)+sin(2*pi*f2*t), avec f1 = 0.1 Hz et f2 = 1 Hz, et visualiser le signal ainsi généré. Pour réaliser ce signal, utiliser le bloc Fcn qui se trouve dans simulink / Functions & Tables.
10 Clock Fcn

X(t)
Scope

Le bloc « clock » sera le temps qui est l’entrée du système. Les deux blocs clock et Fcn forment le générateur du signal x(t).
SIGNAUX DISCRETS

Pour obtenir un signal discret, il faut faire un échantillonnage du signal correspondant. A l’aide d’un bloc « bloqueur d’ordre zéro » ( Simulink / Discrete ) on peut effectuer l’échantillonnage du signal.

Hassan EL MAKSSOUD « makssoud@lirmm.fr » Raphaël MORET « moret@lirmm.fr »

-1-

TP DEUG STPI 2ème Année

TP de traitement de signal

Q3) Effectuer l’échantillonnage d’un signal sinusoïdal (T = 10 s) et le visualiser. Remarque : Matlab est un logiciel de calcul numérique ( et non formel ! ), en conséquence il traite les signaux de manière numérique (table de valeurs), les signaux sont "échantillonnés" de manière automatique (bloqueur d’ordre 1) (on peut augmenter le nombre d’échantillon : menu « Simulation » / « Simulation parameters… »). Q4) Vérifier cette remarque à l’aide de MatLab en utilisant « length(x) » et en mettant dans simulink le bloc « To WorkSpace » (paramètres : « Save Format : Array »).

ANALYSE SPECTRALE Le spectre du signal x(t) est constitué de raies spectrales aux fréquences : n*f0. f0 est appelée fréquence fondamentale et les fréquences n*f0 sont appelées harmoniques.

X ( f ) = ! x(t )e # j 2$ft dt
#"

"

X(f) représente le spectre du signal x(t). Transformée de Fourier discrète (fréquence d'échantillonnage fe = 1/Te):

X(f ) =

n = "#

$ x(n.Te).e

+#

" j 2 !fnTe

avec n ∈ Z

Q4) Analyse de fourrier d’un signal carré.
1. Créer un signal carré de 0 à 5 s, de fréquence 20 Hz à la période d’échantillonnage de 1000 Hz. 2. Effectuer la fft sur 5000 points . (Pour aide tapez ‘help fft’). 3. Créer une variable pour le demi-axe des fréquences. 4. Tracer le module de la fft en fonction de la fréquence. Tracer la phase du signal. Q5) A partir du signal de la question Q2) et en utilisant Simulink, effectuer l’analyse spectrale de ce signal (transformée de fourrier) afin de mettre en évidence les fréquences du signal. Utiliser le bloc « Power Spectral Density ».

Q6) Retrouver les résultats de l’analyse spectral en utilisant des fonctions Matlab ( fft ). Aidez vous du menu help de MatLab.

Hassan EL MAKSSOUD « makssoud@lirmm.fr » Raphaël MORET « moret@lirmm.fr »

-2-

TP DEUG STPI 2ème Année

TP de traitement de signal

FILTRAGE ET PRODUIT DE CONVOLUTION

Le produit de convolution de signaux discrets est donné par la formule :
y (i ) = h ( n ) $ x ( n ) =
n = +" n = #"

! h(n). x(i # n)

avec n,i ∈ N

Afin d’appliquer cette formule, on va s’appuyer sur l’exercice 2 du TD 4 : On rappel : x = [0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0]; et h = [1 0 -1]; ces deux matrices sont définies sous matlab de la manière suivante : >> a=zeros(1,4) a= 0 0 0 0 >> x=[a b a] x= 0 0 0 > b=ones(1,8) b= 1 1 1 1 >> h=[1 0 -1] h= 1 0 -1

1

1

1

1

0

1

1

1

1

1

1

1

1

0

0

0

0

L’instruction du produit de convolution est conv2(x,h,’same’). (voir la signification de conv2 dans l’aide !) >> y=conv2(x,h,’same’) y= 0 0 0 1 1 0 0 0 0 0 0 -1 -1 0 0 0

Q7) Appliquer la même méthode pour trouver le signal image de 2 dimensions [16x16] y(i,j),
l’image x(i,j) filtrée par h(i,j) de la question 3 de l’exercice 2 TD4. Noter et analyser la matrice y(i,j) résultantes ainsi le rôle du filtre h(i,j).

Q8) Détection du contour d’une image.
l’instruction « edge » dans Matlab calcule le contour de l’image. Ce type de filtrage s’appelle détection de contour. Plusieurs variantes de ce filtrage existent : sobel, prewitt, … y = edge(I, 'sobel', THRESH); soit THRESH=0.001; imshow(I), pour afficher l’image. On peut appliquer cet méthode sur n’importe quel image I = imread('image.tif'); pour lire l’image et le mettre sous forme matricielle dans I. Puis on applique la fonction edge sur I. Appliquer cet algorithme sur une image choisie par vous. Détecter le contour. Analyser et commenter.

Hassan EL MAKSSOUD « makssoud@lirmm.fr » Raphaël MORET « moret@lirmm.fr »

-3-

TP DEUG STPI 2ème Année

TP de traitement de signal

Q9) Filtre RII (TD 5)
h(n) comme la réponse impulsionnelle du filtre numérique

x(n)

h(n)

y(n)

L’équation récursive de la sortie est :

y( n ) = 0.1x( n ) + 1.3 y( n ! 1 ) ! 0.4 y( n ! 2 )

a) Réaliser sous simulink ce filtre et analyser la sortie. (X est une impulsion de Dirac). On fera attention de paramétrer correctement les blocs (annuler l’échantillonnage réalisé par les blocs retard). Vérifier la valeur des points obtenues sous MatLab. Exemple pour le filtre : y (n) = 0.2 x(n) + 0.9 y (n ! 1)

b) Ecrire un programme sous MatLab qui réalise ce filtrage (on utilisera le signal x(n) défini par simulink). Vérifier les valeurs obtenues. c) Calculer la FFT du filtre (l’inclure dans le programme). d) Appliquer ce filtre au spectre (a calculer) du signal de la question Q2). Exemple pour le filtre : y (n) = 0.2 x(n) + 0.9 y (n ! 1) y(1)=0.2*x(1); y(2)=0.2*x(2)+0.9*y(1); for i=3:N, y(i)=0.2*x(i)+0.9*y(i-1); end y‘ yf=fft(y,1000); n_yf=abs(yf); f=1000*(0:499)/1000; figure; plot(f :n_yf(1:500) zf=fft(z,1000); n_zf=abs(zf); f1=1000*(0:499)/1000; figure; plot(f1,n_zf(1:500)) r=n_zf.*n_yf '; figure; plot(f,r(1:500)) Création du filtre Calcule de la sortie Y à partir de X et h. X est un signal de dirac. ( le premier élément de la matrice X est X(1)) Spectre du filtre

Spectre du signal

Filtrage

Hassan EL MAKSSOUD « makssoud@lirmm.fr » Raphaël MORET « moret@lirmm.fr »

-4-

TP DEUG STPI 2ème Année

TP de traitement de signal

Découverte de Sptool
Manipulations - Sous la fenêtre de commande Matlab, tapez sptool pour lancer sptool. - De la fenêtre de dialogue de Sptool vous allez pouvoir importer et/ou exporter des données depuis/vers des fichiers ou la fenêtre de commande de matlab. - Avec Sptool, vous allez pouvoir interactivement créer des filtres numériques, visualiser leurs différentes réponses et visualisez des signaux et des spectres. On se base sur la synthèse d'un filtre (RII) passe-bas avec une bande atténuée à 40 dB à partir de 5Hz et une fréquence d'échantillonnage à 40 Hz. Prise en main de SPTOOL : Synthèse de filtres  Dans la fenêtre SPTool, Cliquez sur 'new design'. Une fenêtre Filter Designer s'ouvre.  Saisissez le type de filtre Butterworth, puis le gabarit (Décocher la case minimum Order) (Fs,Rs,Sampling Frequency) et cliquez sur 'apply'.  Puis cliquez sur 'File / Close'. Votre filtre synthétisé apparaît avec le nom filt1, donnez lui un nom par 'Edit / Name'.  Créer de la même manière les deux filtre de Chebyshev (avec les même caractéristiques). S1) Visualisation des caractéristiques du filtres  Dans la fenêtre SPTool, choisissez un filtre, puis cliquez sur 'View'. Une fenêtre Filter Viewer s'ouvre.  Dans la fenêtre Filter Viewer, sélectionnez les réponses que vous voulez observer (zéros/pôles, module, phase, retard de groupe, impulsionnelle, indicielle ...) et les échelles à utiliser. Zoomez, explorez.  Basculez dans la fenêtre SPTool et sélectionnez les trois filtres créés (maintenir enfoncé la touche ctrl).  Comparer les trois filtres. Visualisation des signaux Dans la fenêtre de commande de matlab : Créer un vecteur t de 0 à 4pi sur 1024 points. Créer un vecteur y=2*sin(2*pi*f1*t)+sin(2*pi*f2*t) avec f1 = 1 Hz et f2 = 10 Hz.  Charger avec la fonction wavread le fichier 'son.wav' qui se trouve sur le bureau. (spécifier le chemin dans la barre de menu de MatLab) (ATTENTION : après ne plus taper d’instruction dans la fenêtre Commande Window).  Dans la fenêtre SPTool, importez ces différents signaux avec 'File / Import'. (‘ans’ correspond à la dernière réponse donné par MatLab, donc au signal ‘son.wav’ sous forme matricielle)  Choisissez en un ou plusieurs, cliquez sur 'View' et explorez la nouvelle fenêtre Signal Browser.

S3) Filtrage  Dans la fenêtre SPTool, sélectionnez le signal ‘y‘ ainsi que le filtre de Butterworth, puis cliquez sur 'Apply'.  Renommer le signal ainsi filtré.  Avec le Signal Browser, observez le signal avant et après filtrage.
Hassan EL MAKSSOUD « makssoud@lirmm.fr » Raphaël MORET « moret@lirmm.fr » -5-

TP DEUG STPI 2ème Année
 

TP de traitement de signal

Modifier les caractéristiques du filtre (fréquence de coupure,…), et observer. Faire des essais avec les autres filtres.

S4) Analyse spectrale d'un signal  Dans la fenêtre SPTool, sélectionnez un signal, puis dans la colonne Spectra, cliquez sur 'Create'.  Dans la fenêtre Spectrum Viewer qui vient d'apparaître choississez une méthode d'analyse spectrale, puis 'Apply'. Cela vous donne le spectre du signal. S5) Export Vous pouvez renvoyer sous la fenêtre de commande de matlab ce que vous avez créé sous la fenêtre SPTool avec 'File / Export'. Cette commande crée dans la fenêtre de commande une variable du nom de l'objet exporté. Cette variable est une structure. Tapez son nom suivi de 'enter', vous verrez la liste des champs de la structure apparaître. Par exemple pour un filtre appelé B. En tapant B.tf.num, vous accédez au numérateur de la fonction de transfert en Z, B.tf.den et c'est le dénominateur ...

Hassan EL MAKSSOUD « makssoud@lirmm.fr » Raphaël MORET « moret@lirmm.fr »

-6-