0% ont trouvé ce document utile (0 vote)
53 vues26 pages

Master Systèmes Électroniques Et Énergies Renouvelables: Module: Traitement de Signale Avancé

Transféré par

Zakaria èl fechtali
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
53 vues26 pages

Master Systèmes Électroniques Et Énergies Renouvelables: Module: Traitement de Signale Avancé

Transféré par

Zakaria èl fechtali
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi