Académique Documents
Professionnel Documents
Culture Documents
TP1
% Affichage
figure;
plot(t, x);
title('Représentation temporelle du signal');
xlabel('Temps (s)');
ylabel('Amplitude');
1-2 Autocorrélation
L’estimation de l’autocorrélation d’un signal ou de l’intercorrélation de deux signaux de
longueur N peut être effectuée avec la fonction xcorr :
>> Cxy = xcorr(x,y,option) ;
Master : traitement numérique du signal janvier /2024 Chalabi Z
% Calcul de l'autocorrélation
Cxy = xcorr(x, y, 'biased'); % 'biased' pour une estimation normalisée
% Affichage
figure;
plot(Cxy);
title('Autocorrélation du signal');
xlabel('Décalage');
ylabel('Amplitude');
Remarque :
Ces scripts MATLAB nous permet de visualiser la représentation temporelle d'un signal
numérique et de calculer ainsi que d'afficher son autocorrélation. nous pouvons modifier les
paramètres comme la fréquence d'échantillonnage fe, le nombre d'échantillons N, et la forme
du signal x pour répondre à nos besoins spécifiques.
TP 2
1-On échantillonne une sinusoïde de fréquence 200hz, à la fréquence Fe =500hz. Quel signal
obtient-on lors d’une reconstruction parfaite ?
2- On échantillonne une sinusoïde de fréquence 200hz, à la fréquence Fe=250hz. Quel signal
obtient-on lors d’une reconstruction parfaite ?
Master : traitement numérique du signal janvier /2024 Chalabi Z
Solution
1 et 2. Échantillonnage de la Sinusoïde à 500 Hz et 250 Hz
Script de Matlab :
% Paramètres
fs = 200; % Fréquence du signal
Fe = [500, 250]; % Fréquences d'échantillonnage pour les deux cas
T = 1; % Durée du signal en secondes
for fe = Fe
% Échantillonnage
t = 0:1/fe:T;
x = sin(2*pi*fs*t);
% Reconstruction
t_interp = 0:1/(10*fe):T;
x_interp = interp1(t, x, t_interp, 'spline');
% Affichage
figure;
plot(t, x, 'o', t_interp, x_interp, '-');
title(['Sinusoïde de 200 Hz échantillonnée à ', num2str(fe), ' Hz et reconstruite']);
xlabel('Temps (s)');
ylabel('Amplitude');
end
Master : traitement numérique du signal janvier /2024 Chalabi Z
I- Question 3 de I.
Taper :
Te = 10 ; fs =200Hz ; % nombre de points et fréquence du signal
Fe = input (‘fréquence d’échantillonnage en Hz (fs =200hz) =’) ;
K = 40 ; % facteur de sur échantillonnage pour affichage
Tc= k*Te ; fg = K*Fe ; tg= (0 :Tc-1)/fg;
Te = (1:K:Tc-1)/fg ; xte = cos(2*pi*te*fs); % un point sur K
Xt = cos(2*pi*tg*fs) ;¨% signal à temps quasi continu
Xti = inter(xte,K) ; % interpolation
Plot (tg,xt, te,xte,’o’,tg,xti,’ :’) ; %affichage des signaux.
Solution
3. Programme pour Afficher et Vérifier l'Échantillonnage et la Reconstruction
Script de Matlab :
Master : traitement numérique du signal janvier /2024 Chalabi Z
te = (1:K:Tc-1) / fg;
xte = cos(2*pi*te*fs); % Un point sur K
xt = cos(2*pi*tg*fs); % Signal à temps quasi continu
xti = interp1(te, xte, tg, 'spline'); % Interpolation
TP 3
subplot(2,1,2);
stem(y1);
title('Sortie par Filtrage');
xlabel('n');
ylabel('y1(n)');
2- En déduire la fonction de correlation entre x(n) et h(n) de façon directe par « xcorr ».
Afficher le résultat. Quelle remarque faite vous ?
Solution
2. Fonction de Corrélation entre x(n) et h(n)
Script MATLAB :
% Calcul de la corrélation entre x et h
correlation = xcorr(x, h);
% Affichage de la corrélation
Master : traitement numérique du signal janvier /2024 Chalabi Z
figure;
stem(correlation);
title('Corrélation entre x(n) et h(n)');
xlabel('Décalage');
ylabel('Amplitude');
CONCLUSION :
Après En exécutant ces scripts dans MATLAB, nous pourrons observer que le résultat de la
convolution de x(n) et h(n) est similaire au résultat obtenu par filtrage, démontrant ainsi que le
filtrage est une forme de convolution. De plus, la fonction de corrélation entre x(n) et h(n)
nous donnera une idée de la relation linéaire entre ces deux signaux. nous pouvons observer la
forme et les caractéristiques de la corrélation pour mieux comprendre leur interaction.
TP 4
Analyse spectrale TFD
II- Observation d’une sinusoïde complexe (l’objectif est la précision et la résolution spectrale)
Considérons la suite x(n) obtenue par échantillonnage de la sinusoïde complexe exp(j2π F0t) à
la cadence Fe = 1/T. En posant f0= F0/Fe <1, on a x(n) = exp(j2πf0n).
1- Déterminer l’expression de la TFtd de la suite x(n) = exp(j2πf0n) où f0 = 7/32 et n =
[0,…,31]
SOULUTION
1. Expression de la TFD de x(n) = exp(j2πf0n) avec f0 = 7/32
Script MATLAB :
Master : traitement numérique du signal janvier /2024 Chalabi Z
% Paramètres
f0 = 7/32;
N = 32;
n = 0:N-1;
% Sinusoïde complexe
x = exp(1j * 2 * pi * f0 * n);
% Calcul de la TFD
X = fft(x);
4- Soit à présent f0= 0.2. Afficher le module de la TFD de x(n). Comment expliquer vous les
résultats obtenus. On sait en fait que la TF de exp(j2πF0t) est δ(f-F0). On pourrait donc
s’attendre à retrouver un résultat analogue pour la TFD au point de fréquence f0.
3. Module de la TFD de x(n) pour f0 = 0.2
Script MATLAB
% Paramètres pour f0 = 0.2
f0 = 0.2;
% Sinusoïde complexe
x = exp(1j * 2 * pi * f0 * n);
% Calcul de la TFD
X = fft(x);
Ces scripts vous permettent d'observer visuellement le module de la TFD pour différentes
fréquences et d'analyser l'impact de la fréquence du signal sur sa représentation spectrale.
- TP
Exercice 1
Engendrer un signal numérique : fonction triangulaire, défini par :
Solution :
La fenêtre triangulaire peut être obtenue par convolution de deux fenêtres rectangulaires, en
utilisant l’instruction conv par matlab.
Solution :
Script Matlab
% Paramètres
N = 100; % Longueur du signal
rect = ones(1, N/2); % Fenêtre rectangulaire
% Affichage
figure;
plot(triangle);
title('Fenêtre triangulaire');
xlabel('Échantillons');
ylabel('Amplitude');
Master : traitement numérique du signal janvier /2024 Chalabi Z
Rappèl :
- un signal numérique échantillonné à la fréquence Fe est un vecteur (dans Matlab) de n
éléments (de durée N/Fe ou NTe), le vecteur temps associé est :
>> t = (0 : N-1)/Fe ;
- La TfD d’un signal de N points est calculée par FFT :
>> X = fft(x) ; % c’est un signal périodique (période = Fe) de N points échantillonné à la
fréquence N/Fe, le vecteur des fréquences qui lui est associé est :
>> f = (0 : N-1)/N*Fe
- X peut être représenté sur l’intervalle [-Fe/2, +Fe/2] grâce à la fréquence fftshift (qui ne
fait qu’un décalage de vecteur sans calcul de fft) :
>> Y = fftshift(X) ;
Le vecteur de fréquence associé est alors :
>> f = (0 : N-1)/N*Fe - Fe/2
Exercice 2
Ecrire l’instruction qui engendre une séquence de valeurs correspondant à un échantillonnage
à la fréquence Fe = 1000hz, d’une sinusoïde réelle de fréquence 80hz et d’amplitude 3,
pendant une durée de 30ms:
Tapez : whos.
Matlab affiche:
Name Size Total Complexe
S 1 by 31 31 No
Grand total is (31*8) = 248 bytes.
Matlab indique que la matrice s possède 1 ligne et 31 colonnes, soit au total 31 valeurs réelles.
Affiche le signal s, mais l’axe des abscisses représente, dans ce cas, les indices de s.
Si l’on veut que l’axe des abscisses porte l’échelle des temps en seconde, il faut taper :
>> plot((0 : 30)/1000, s,’x’)
Qui affiche les 31 valeurs allant de l’instant 0 à l’instant 30ms par pas de 1 ms.
Si on tape
>> plot ((0 : 30)/1000, s, ’x’, (0:30)/1000, s)
On obtient la superposition des deux.
Figure :
Solution :
Script Matlab
% Paramètres
Fe = 1000; % Fréquence d'échantillonnage
f = 80; % Fréquence de la sinusoïde
A = 3; % Amplitude
T = 0.03; % Durée en secondes
t = 0:1/Fe:T-1/Fe; % Vecteur de temps
% Sinusoïde
s = A * sin(2 * pi * f * t);
% Affichage
figure;
plot(t, s);
title('Sinusoïde échantillonnée');
xlabel('Temps (s)');
ylabel('Amplitude');
Master : traitement numérique du signal janvier /2024 Chalabi Z
Exercice 3
Tracer le signal numérique résultant de l’échantillonnage avec Te =1 de la fonction à temps
continu cos(2πft) dont la fréquence varie avec le temps selon la loi f = 0.01t. On effectuera le
tracé sur une centaine de points. Le signal continu n’est pas ici périodique mais on constatera
que la représentation du signal échantillonné parait cependant l’être.
Solution :
Solution :
Script Matlab
% Paramètres
Te = 1; % Intervalle d'échantillonnage
N = 100; % Nombre de points
t = 0:Te:(N-1)*Te; % Vecteur de temps
f_t = 0.01 * t; % Fréquence variable
% Signal
s = cos(2 * pi * f_t .* t);
% Affichage
figure;
plot(t, s);
Master : traitement numérique du signal janvier /2024 Chalabi Z
Exercice 4
Solution :
%Spectre de la fonction triangulaire de l’exo 1.
Solution :
Script Matlab
% Calcul de la TFD
X = fft(triangle, 1024);
subplot(4,1,2);
plot(angle(X));
title('Phase');
subplot(4,1,3);
plot(real(X));
title('Partie Réelle');
subplot(4,1,4);
plot(imag(X));
title('Partie Imaginaire');
Master : traitement numérique du signal janvier /2024 Chalabi Z
TP 7
Transformée de Fourier discrète
SOLUTION
1. Générer une Fenêtre Rectangulaire
Script Matlab
P = ones(1, 5); % Fenêtre rectangulaire de longueur 5 échantillons
2. Calculer la TFD de la Fenêtre sur N Points
Script Matlab
N = 1000;
Pf = fft(P, N); % TFD de P sur N = 1000 points
3. Afficher le Module de la TFD
Script Matlab
figure;
plot(abs(Pf));
title('Module de la TFD de la Fenêtre Rectangulaire');
xlabel('Fréquence (k/N)');
ylabel('Amplitude');
Master : traitement numérique du signal janvier /2024 Chalabi Z
figure;
plot(abs(Pf));
title('Largueur du Lobe Principal');
xlabel('Fréquence (k/N)');
ylabel('Amplitude');
[gx, ~] = ginput(2); % Utiliser la souris pour sélectionner les points
df = abs(gx(2) - gx(1)); % Largeur du lobe principal
Master : traitement numérique du signal janvier /2024 Chalabi Z
7. Module de la TF en Décibels
Script Matlab
figure;
plot(20 * log10(abs(Pf)/max(abs(Pf))));
title('TF en Décibels');
xlabel('Fréquence (k/N)');
ylabel('Amplitude (dB)');
axis([0, N, 0, 15]);
Master : traitement numérique du signal janvier /2024 Chalabi Z
figure;
plot(abs(X), '*');
title('Module de la TFD pour f0 = 1600 Hz');
xlabel('Fréquence (k/P)');
ylabel('Amplitude');
Master : traitement numérique du signal janvier /2024 Chalabi Z
f0 = 1680;
x = exp(1j * 2 * pi * f0 * n / Fe);
X = fft(x(1:P), P);
figure;
plot(abs(X), '*');
title('Module de la TFD pour f0 = 1680 Hz');
xlabel('Fréquence (k/P)');
ylabel('Amplitude');
Master : traitement numérique du signal janvier /2024 Chalabi Z
~ Bonne chance ~