Université Abdelmalek Essaâdi
Faculté Polydisciplinaire à Larache
Master Systèmes Électroniques et Énergies
Renouvelables
Module : traitement de signale avancé
Le compte rendu de TP N° 01 et TP N° 02
Réalisé par : Encadré par :
AOUDAINA Hatam Pr. [Link] MALEKY
EL FECHTALI Zakariae
Année universitaire 2023/2024
1
TP N° 01 : Génération et affichage des signaux
Exercice 1
1) Ecrire un programme Matlab qui permet de représenter la fonction
signe et échelon respectivement en utilisant la 2ème forme :
• Code Matlab de fonction signe :
% Paramètres du filtre
omega_n = 10; % Fréquence naturelle non amortie
zeta = 0.5; % Facteur d'amortissement
% Fonction de transfert du filtre du deuxième ordre
num = [omega_n^2];
den = [1, 2*zeta*omega_n, omega_n^2];
sys = tf(num, den);
% Temps d'échantillonnage
dt = 0.01;
t = -5:dt:5;
% Impulsion de Dirac
delta = zeros(size(t));
delta(t == 0) = 1;
% Réponse du système à l'impulsion de Dirac
[y_signe, ~, x_signe] = lsim(sys, delta, t);
% Fonction signe
signe = t ./ abs(t);
2
signe(isnan(signe)) = 1; % Correction pour t = 0
% Affichage des résultats
figure;
plot(t, signe, 'b', t, y_signe, 'r');
xlabel('Temps');
ylabel('Amplitude');
title('Réponse du filtre du 2ème ordre à la fonction signe');
legend('Fonction signe', 'Réponse filtrée');
• Simulation de code :
Exercice 2
1- Signal rectangulaire qui possède l'amplitude 1 entre les instants -1 et 1
• Code Matlab de fonction rectangulaire :
% Définition des instants de temps
t = linspace(-2, 2, 1000); % Crée un vecteur de temps de -2 à 2
3
% Création du signal rectangulaire
rect_signal = rectpuls(t, 2); % Amplitude 1 entre -1 et 1
% Affichage du signal rectangulaire
plot(t, rect_signal, 'b', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal rectangulaire');
grid on;
• Simulation de code :
2- Signal rampe:
• Code Matlab de fonction rampe :
% Définition des instants de temps
t = linspace(0, 5, 100); % Crée un vecteur de temps de 0 à 5 avec 100
points
4
% Définition du signal de rampe
ramp_signal = t;
% Affichage du signal de rampe
plot(t, ramp_signal, 'b', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal de rampe');
grid on;
• Simulation de code
3-Signal triangulaire dont l'amplitude maximale est I et la largeur de la
fenêtre est 2 entre les instants -1 et 1.
• Code Matlab de fonction rectangulaire :
% Définition des instants de temps
5
t = linspace(-2, 2, 1000); % Crée un vecteur de temps de -2 à 2 avec 1000
points
% Création du signal rectangulaire
largeur = 2; % Largeur de la fenêtre
rect_signal = rectpuls(t, largeur); % Amplitude maximale de 1, largeur de
fenêtre de -1 à 1
% Affichage du signal rectangulaire
plot(t, rect_signal, 'b', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal rectangulaire');
grid on;
• Simulation de code
6
Exercice 3 :
Ecrire un programme Matlab qui permet de reconstituer et afficher le
signal x(t) de la figure ci-dessous en fonction de l'échelon et la rampe.
• Code Matlab
% Définition des instants de temps
t = linspace(-5, 5, 1000); % Crée un vecteur de temps de -5 à 5 avec 1000
points
% Définition du signal échelon
echelon = 2 * (t >= 0); % Échelon unitaire à partir de t = 0
% Définition du signal rampe
rampe = t .* (t >= 0); % Rampe à partir de t = 0
% Reconstitution du signal x(t) en additionnant l'échelon et la rampe
x = echelon + rampe;
% Affichage du signal x(t)
plot(t, x, 'b', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal x(t)');
grid on;
7
• Simulation de code
TP N° 02 : Convolution et corrélation
1- Utiliser la fonction << conv >>> pour Lalculer la convolution
entre le signal x(t) et lui-même.
• Code Matlab
% Définition des instants de temps
t = -5:0.01:5;
% Génération du signal x(t) avec rectpuls
x = rectpuls(t - 0.5, 1);
% Affichage du signal x(t)
plot(t, x, 'b', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal x(t)');
grid on;
8
• Simulation de code
2- Afficher la forme du signal résultant de la convolution entre les
instants -5:pas: 5.
• Code Matlab
% Définition des instants de temps
t = -5:0.01:5;
% Génération du signal y(t) avec rectpuls
y = rectpuls(t - 1, 2);
% Affichage du signal y(t)
plot(t, y, 'b', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal y(t)');
grid on;
9
• Simulation de code
3- Effectuer la convolution entre les deux signaux rectangulaires x(t) et
y(t) .
• Le code Matlab
% Définition des instants de temps
t = -5:0.01:5;
% Génération du signal z(t) avec rectpuls
z = rectpuls(t - 1.5, 3);
% Affichage du signal z(t)
plot(t, z, 'b', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal z(t)');
grid on;
10
• Simulation de code
4-Afficher la forme du signal résultant de la convolution entre les
instants -10:pas:10.
• Code Matlab :
% Définition des instants de temps
t = -5:0.01:5
% Génération du signal w(t) avec rectpuls
w = rectpuls(t - 1.5, 3);
% Ajustement des amplitudes
w(t >= 0 & t < 2) = 1; % Amplitude 1 pour 0 <= t < 2
w(t >= 2 & t < 3) = 2; % Amplitude 2 pour 2 <= t < 3
% Affichage du signal w(t)
plot(t, w, 'b', 'LineWidth', 2);
11
xlabel('Temps');
ylabel('Amplitude');
title('Signal w(t)');
grid on;
• Simulation de code
5- Vérifier par Matlab les propriétés de convolution suivantes
• Le code :
% Définition des instants de temps
t = -5:0.01:5;
% Génération du signal x(t) avec rectpuls
x = rectpuls(t - 0.5, 1);
% Calcul de la convolution de x(t) avec lui-même
convolution = conv(x, x) * 0.01; % Utilisation de la méthode de
convolution discrète avec un pas de 0.01
12
% Création du vecteur de temps pour la convolution
t_conv = linspace(-10, 10, length(convolution));
% Affichage du signal x(t)
subplot(2, 1, 1);
plot(t, x, 'b', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal x(t)');
grid on;
% Affichage de la convolution
subplot(2, 1, 2);
plot(t_conv, convolution, 'r', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Convolution de x(t) avec lui-même');
grid on;
• Simulation de code
13
6- Générer et afficher par la suite les signaux s_{1}(l) et s_{2}(t) dans
l'intervalle de temps -5:pas: 5. Utiliser la commande s2=tripuls(1.2) pour
générer le signal s. (t) .
• Code :
% Définition des instants de temps
t = -5:0.01:5;
% Génération du signal x(t) avec rectpuls
x = rectpuls(t - 0.5, 1);
% Génération du signal y(t) avec rectpuls
y = rectpuls(t - 1, 2);
% Calcul de la convolution de x(t) avec y(t)
convolution = conv(x, y) * 0.01; % Utilisation de la méthode de
convolution discrète avec un pas de 0.01
% Création du vecteur de temps pour la convolution
t_conv = linspace(-10, 10, length(convolution));
14
% Affichage du signal x(t)
subplot(3, 1, 1);
plot(t, x, 'b', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal x(t)');
grid on;
% Affichage du signal y(t)
subplot(3, 1, 2);
plot(t, y, 'r', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal y(t)');
grid on;
% Affichage de la convolution
subplot(3, 1, 3);
plot(t_conv, convolution, 'g', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Convolution de x(t) avec y(t)');
grid on;
• Simulation de code :
15
7- Effectuer la convolution entre les deux signaux rectangulaires s_{1}(t)
et s_{2}(t) et afficher la forme du signal résultant entre les instants -
10:pas: 10
• Code Matlab :
% Définition des instants de temps
t = -10:0.01:10;
% Génération du signal x(t) avec rectpuls
x = rectpuls(t - 0.5, 1);
% Génération du signal y(t) avec rectpuls
y = rectpuls(t - 1, 2);
% Calcul de la convolution de x(t) avec y(t)
convolution = conv(x, y) * 0.01; % Utilisation de la méthode de
convolution discrète avec un pas de 0.01
% Création du vecteur de temps pour la convolution
16
t_conv = linspace(-10, 10, length(convolution));
% Affichage du signal x(t)
subplot(3, 1, 1);
plot(t, x, 'b', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal x(t)');
grid on;
% Affichage du signal y(t)
subplot(3, 1, 2);
plot(t, y, 'r', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal y(t)');
grid on;
% Affichage de la convolution
subplot(3, 1, 3);
plot(t_conv, convolution, 'g', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Convolution de x(t) avec y(t)');
grid on;
17
% Définition des instants de temps
t = -5:0.01:5;
% Initialisation du signal s1(t)
s1 = zeros(size(t));
% Position des impulsions
positions = [-2, 0, 2];
% Amplitude des impulsions
amplitude = 1; % Amplitude élevée pour une meilleure visibilité
% Génération du signal s1(t)
for i = 1:length(positions)
s1 = s1 + amplitude * (abs(t - positions(i)) < 0.01); % Approximation
d'une impulsion à chaque position
end
% Affichage du signal s1(t)
plot(t, s1, 'b', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal s1(t)');
grid on;
• Simulation de code :
18
8- Effectuer la convolution entre les deux signaux rectangulaires s_{1}(t)
et s_{2}(t) et afficher la forme du signal résultant entre les instants -
10:pas: 10
• Code :
% Définition des instants de temps
t = -5:0.01:5;
% Initialisation du signal s1(t)
s1 = zeros(size(t));
% Position des impulsions
positions = [-2, 0, 2];
% Amplitude des impulsions
amplitude = 1; % Amplitude élevée pour une meilleure visibilité
% Génération du signal s1(t)
for i = 1:length(positions)
19
s1 = s1 + amplitude * (abs(t - positions(i)) < 0.01); % Approximation
d'une impulsion à chaque position
end
% Affichage du signal s1(t)
plot(t, s1, 'b', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal s1(t)');
grid on;
• Simulation de code:
% Définition des instants de temps
t = -5:0.01:5;
% Génération du signal s(t) avec tripuls
20
s = tripuls(t, 2);
% Affichage du signal s(t)
plot(t, s, 'b', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal s(t)');
grid on;
9- Vérifier théoriquement tous les résultats obtenus
• Code de Matlab
% Définition des instants de temps
t = -5:0.01:5;
% Génération du signal s1(t) avec des impulsions centrées en -2, 0 et 2
s1 = zeros(size(t));
s1(t == -2 | t == 0 | t == 2) = 1; % Impulsions à -2, 0 et 2
21
% Génération du signal s2(t) avec un signal triangulaire centré en 0 et de
largeur 2
s2 = tripuls(t - 1, 2);
% Calcul de la convolution entre s1(t) et s2(t)
convolution = conv(s1, s2) * 0.01; % Utilisation de la méthode de
convolution discrète avec un pas de 0.01
t_conv = linspace(-10, 10, length(convolution)); % Vecteur de temps pour
la convolution
% Affichage des signaux s1(t) et s2(t)
subplot(3, 1, 1);
plot(t, s1, 'b', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal s1(t)');
grid on;
subplot(3, 1, 2);
plot(t, s2, 'r', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Signal s2(t)');
grid on;
% Affichage de la convolution
subplot(3, 1, 3);
plot(t_conv, convolution, 'g', 'LineWidth', 2);
xlabel('Temps');
ylabel('Amplitude');
title('Convolution de s1(t) avec s2(t)');
22
grid on;
• Simulation de code
2-Autocorrélation
1- Utiliser la fonction << xcorr >>> pour calculer l'autocorrélation du
signal x(t) de la première manipulation.
• Code de simulation
% Définir l'intervalle de temps
t = -5:0.01:5;
% Générer le signal x(t) avec rectpuls
x = rectpuls(t-0.5, 1);
% Afficher le signal x(t) figure;
plot(t, x);
title('Signal x(t)');
xlabel('Temps');
ylabel('Amplitude');
% Calculer l'autocorrélation de x(t)
23
autocorr_x = xcorr(x);
% Afficher l'autocorrélation figure ;
plot(autocorr_x);
title('Autocorrélation de x(t)');
xlabel('Décalage');
ylabel('Amplitude');
• Simulation de code
3-Intercorrélation
1- Effectuer la corrélation entre les deux signaux rectangulaires x(t) et
w(t)
• Code de simulation
% Définir l'intervalle de temps
t = -5:0.01:5;
% Générer le signal w(t) avec rectpuls
w = rectpuls(t-1.5, 3);
w((t < 0) | (t > 2)) = 0;
w((t > 2) & (t <= 3)) = 2;
% Générer le signal x(t) avec rectpuls
24
x = rectpuls(t-0.5, 1);
% Afficher le signal w(t)
figure;
plot(t, w);
title('Signal w(t)');
xlabel('Temps');
ylabel('Amplitude');
% Afficher le signal x(t)
figure;
plot(t, x);
title('Signal x(t)');
xlabel('Temps');
ylabel('Amplitude');
% Calculer la corrélation entre w(t) et x(t)
correlation_wx = xcorr(w, x);
% Temps correspondant à la corrélation
temps_correlation = -10:0.01:10;
% Afficher la corrélation
figure;
plot(temps_correlation, correlation_wx);
title('Corrélation entre w(t) et x(t)');
xlabel('Temps');
ylabel('Amplitude de corrélation');
• Simulation de code
25
26