TP Traitement de signal MATLAB
Exercice 1:
% --- Configuration des paramètres ---
f = 5; % Fréquence du signal en Hertz (Hz)
Fe = 100; % Fréquence d'échantillonnage en Hz
duree = 2; % Durée du signal en secondes
% 1. Définition du vecteur temps (Question 1)
Te = 1 / Fe; % Calcul de la période d'échantillonnage (le pas de temps)
t = 0 : Te : duree; % Création du vecteur temps de 0 à 2s avec un pas de Te
% 2. Génération du signal x(t) (Question 2)
% On utilise pi (3.1415...) qui est une constante intégrée à MATLAB
x = sin(2 * pi * f * t);
% 3. Représentation graphique (Question 3)
figure; % Ouvre une nouvelle fenêtre de figure
plot(t, x); % Trace le signal x en fonction du temps t
grid on; % Ajoute un quadrillage pour faciliter la lecture
title('Visualisation du signal sinusoïdal x(t)'); % Ajoute un titre
xlabel('Temps (s)'); % Nom de l'axe X
ylabel('Amplitude'); % Nom de l'axe Y
ylim([-1.2 1.2]); % Ajuste les limites verticales pour plus de clarté
Exercice 2:
% --- Configuration ---
Fe = 100; % Fréquence d'échantillonnage (100 points par seconde)
Te = 1 / Fe; % Pas de temps
duree = 2; % Durée de 2 secondes
t = 0 : Te : duree-Te; % Vecteur temps (on retire un échantillon pour la FFT)
% 1. Génération du signal composé (Question 1)
% Le signal contient deux fréquences : 5 Hz et 20 Hz (avec une amplitude plus faible)
x = sin(2 * pi * 5 * t) + 0.5 * sin(2 * pi * 20 * t);
% 2. Calcul de la FFT (Question 2)
N = length(x); % Nombre de points du signal
X_fft = fft(x); % Calcul de la Transformée de Fourier Rapide
% 3. Préparation du spectre en amplitude (Question 3)
% On normalise l'amplitude en divisant par N et on prend la valeur absolue
A = abs(X_fft) / (N/2);
% Création du vecteur fréquences (de 0 à Fe)
f_axe = (0 : N-1) * (Fe / N);
% 4. Tracé du spectre
figure;
stem(f_axe(1:N/2), A(1:N/2)); % On affiche seulement la première moitié (Shannon)
title('Spectre en amplitude du signal x(t)');
xlabel('Fréquence (Hz)');
ylabel('Amplitude');
grid on;
Exercice 3:
% --- Configuration ---
Fe = 100; % Fréquence d'échantillonnage
t = 0 : 1/Fe : 2; % Vecteur temps sur 2 secondes
% 1. Génération du signal utile (Question 1)
s = sin(2 * pi * 5 * t);
% 2. Ajout du bruit aléatoire (Question 2)
% randn génère un bruit blanc gaussien (moyenne 0, écart-type 1)
bruit = 0.5 * randn(size(t));
x_bruite = s + bruit;
% 3. Méthode de filtrage : Moyenne glissante (Question 4)
% On définit une fenêtre (ex: 5 points). Plus elle est grande, plus on lisse.
taille_fenetre = 5;
b = (1/taille_fenetre) * ones(1, taille_fenetre); % Coefficient du filtre
a = 1;
% 5. Application du filtre (Question 5)
x_filtre = filter(b, a, x_bruite);
% --- Représentation graphique (Question 3 & 5) ---
figure;
subplot(3,1,1); % Signal original
plot(t, s, 'g', 'LineWidth', 1.5);
title('1. Signal Original (Pur)');
grid on;
subplot(3,1,2); % Signal bruité
plot(t, x_bruite, 'r');
title('2. Signal Bruité (Original + Bruit)');
grid on;
subplot(3,1,3); % Signal filtré
plot(t, x_filtre, 'b', 'LineWidth', 1.5);
title('3. Signal Filtré (Moyenne Glissante)');
grid on;
xlabel('Temps (s)');