Академический Документы
Профессиональный Документы
Культура Документы
Hicham SAYLANI
Ce polycopié de Travaux Pratiques (TPs) de traitement du signal est destiné aux étudiants
du parcours Electronique de la Licence en Sciences Physiques. En nombre de trois, ces TPs ont
pour but de mettre en œuvre toutes les notions vues en cours et en TDs. Une connaissance
parfaite de ces notions (sur le plan théorique) est donc indispensable pour pouvoir réaliser ces
TPs et en tirer profit.
Le logiciel utilisé pour réaliser ces TPs est le logiciel libre Scilab, qui est très similaire au
logiciel Matlab. Ce logiciel est disponible au téléchargement pour tous les systèmes d’exploi-
tation (Windows, Linux, Mac) sur son site officiel 1 . Il appartient donc à chaque étudiant de le
télacharger et de l’installer préalablement, et ce afin de se préparer au mieux avant le jour du
TP, et aussi pouvoir continuer sur le travail réalisé ce jour-ci.
1. https ://www.scilab.org/fr
1
2 TABLE DES MATIÈRES
TP 1
3
4 TP 1. REPRÉSENTATIONS DE SIGNAUX - SÉRIES DE FOURIER
∆t
Ck = A .sinc2 (kπf0 ∆t)
T0
(f) Le signal qui résulte du redressement double alternance du signal x(t) = cos(2πf0 t) :
2(−1)k+1
Ck =
π(4k 2 − 1)
(g) Le signal qui résulte du redressement simple alternance du signal x(t) = cos(2πf0 t) :
(−1)p+1
pour k = 2p (k pair)
π(4p2 − 1)
Ck =
± 14 pour k = ±1
0 sinon
4. En utilisant la commande sound , écouter le signal xN (t) synthétisé pour chaque valeur
de N , et prenant f0 = 440 Hz et fe > 2f0 . Commenter.
TP 2
1. (a) Ecrire un script qui permet de calculer la TFD du signal x[n] en utilisant la relation
(2.1).
(b) Comparer cette TFD à celle obtenue en utilisant la fonction fft 1 de Scilab.
2. (a) Ecrire un script qui permet de calculer la TFD du signal x[n] en utilisant la relation
(2.2).
(b) Comparer cette TFD à celle obtenue en utilisant les fonctions fft et fftshift de
Scilab.
3. Reprendre les questions 1. et 2. en utilisant pour x[n] un signal aléatoire. Conclure.
1. fft pour Fast Fourier Transform en anglais, soit la Transformée de Fourier Rapide en français (TFR).
5
6 TP 2. INTRODUCTION À L’ANALYSE SPECTRALE NUMÉRIQUE
On rappelle également qu’il existe deux types de convolution discrète, suivant l’approche
qu’on utilise pour calculer z[n]. En considérant que nos signaux discrets sont de durée finie
et causaux (c-à-d x[n − k] = y[n − k] = 0, ∀ n < k) on parle de convolution dite linéaire,
à la quelle on d’intéresse ici.
1. En utilisant la commande ”conv ” de Scilab 2 :
(a) Calculer puis représenter le signal z[n] pour x[n] = y[n] = [0, 1, 1, 1, 0]. Commenter.
(b) Calculer puis représenter le signal z[n] pour x[n] et y[n] des signaux aléatoires de
longueurs quelconques.
2. Après avoir complété les signaux x[n] et y[n] par des zéros pour avoir des longueurs
convenables 3 :
(a) Calculer les TFD des signaux x[n], y[n] et z[n], notées respectivement X[k], Y [k] et
Z[k].
(b) Comparer le produit X[k]. ∗ Y [k] à Z[k]. Conclure.
(c) Calculer la TFD inverse du spectre Z[k] qu’on note z2 [n]. Comparer z2 [n] à z[n] en
les représentant sur la même figure.
(d) Comparer le temps de calcul 4 de z2 [n] à celui de z[n]. Conclure.
2. Pour calculer zl [n] = x[n] ∗ y[n] la syntaxe à utilier est la suivante : z = conv(x, y) ou z = conv(y, x).
3. En utilisant la syntaxe suivante : x = [x, zeros(1, Ny − 1)] et y = [y, zeros(1, Nx − 1)].
4. En mettant le code scilab réalisant ce calcul entre les commandes tic et toc.
2.4. ANALYSE SPECTRALE PAR TFD 7
3.1.1 Signaux 1D
1. Ecrire deux scripts qui permettent de réaliser le filtrage par fft respectivement passe-
bas et passe-haut des signaux audio suivants :
(a) x(t) un signal blanc modélisé par x(t) = b(t), où b(t) est un bruit aléatoire uniforme.
Prendre pour cela x = rand(1, N) pour N impair puis pair (commencer par des
valeurs faibles pour N).
(b) x(t) un signal audio non bruité modélisé par x(t) = s(t), où s(t) est un signal
numérique propre (sans bruit additif). Prendre pour cela [x, f e] = wavread(0 Audio10 ).
(c) x(t) un signal audio bruité modélisé par x(t) = s(t) + b(t), où b(t) est un bruit additif
Haute Fréquence, puis Basse Fréquence. Prendre pour cela [x, f e] = wavread(0 Audio20 )
puis [x, f e] = wavread(0 Audio30 ).
(d) x(t) un signal audio bruité modélisé par x(t) = s(t) + b(t), où le bruit b(t) est cette
fois-ci une sinusoı̈de pure. Prendre pour cela [x, f e] = wavread(0 Audio40 ).
2. Ecrire deux scripts qui permettent de réaliser le filtrage par fft respectivement passe-
bande et coupe-bande en utilisant le signal ”Audio4”.
9
10 TP 3. INTRODUCTION AU FILTRAGE NUMÉRIQUE
3.1.2 Signaux 2D
1. Ecrire deux scripts qui permettent de réaliser le filtrage par fft respectivement passe-
bas et passe-haut des images suivantes :
(a) I une image aléatoire. Prendre pour cela I = rand(M, N) pour M et N impairs puis
pairs.
(b) I une image propre (non bruitée). Prendre pour cela I = imread(0 Image1.png0 ).
(c) I une image bruitée modélisée par I = I0 + B, où B est une image bruit HF, puis BF.
Prendre pour cela I = imread(0 Image2.png0 ) puis I = imread(0 Image3.png0 ).
(d) I une image bruitée modélisée par I = I0 + B, où l’image bruit B est cette fois-ci
une image périodique (sinusoı̈dale). Prendre pour cela I = imread(0 Image4.png0 ).
2. Ecrire deux scripts qui permettent de réaliser le filtrage par fft respectivement passe-
bande et coupe-bande en utilisant les mêmes images de la question précédente.
k=K
X k=L
X
y[n] = bk x[n − k] − ak y[n − k]. (3.2)
k=0 k=1
Un filtre numérique est donc parfaitement décrit par les deux suites de coefficients bk et ak
constituant respectivement deux vecteurs qu’on peut noter ~b = [b0 , b1 , ..., bK ] et ~a = [a0 , a1 , ..., aL ]
(a0 = 1). Quand ces derniers sont connus, on peut très bien analyser puis réaliser le filtre, ce qui
fera l’objet de la section 3.2.1. Dans le cas contraire, il faudra commencer par les déterminer,
suivant des spécifications pré-définies (ou cahier de charges), chose qui relève de la synthèse de
filtres numériques et qui fera l’objet de la section 3.2.2.