0% ont trouvé ce document utile (0 vote)
7 vues4 pages

Simulation D'une Modulation AM

Ce document présente un script MATLAB pour la modulation d'amplitude (AM) avec porteuse et deux méthodes de démodulation : cohérente et par détection d'enveloppe. Il inclut des paramètres configurables pour explorer différents cas, ainsi que des étapes de modulation, démodulation et affichage des résultats. Le script calcule également l'erreur quadratique moyenne pour évaluer la qualité des démodulations.

Transféré par

mawakenmoeangelafleure
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)
7 vues4 pages

Simulation D'une Modulation AM

Ce document présente un script MATLAB pour la modulation d'amplitude (AM) avec porteuse et deux méthodes de démodulation : cohérente et par détection d'enveloppe. Il inclut des paramètres configurables pour explorer différents cas, ainsi que des étapes de modulation, démodulation et affichage des résultats. Le script calcule également l'erreur quadratique moyenne pour évaluer la qualité des démodulations.

Transféré par

mawakenmoeangelafleure
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

%% Modulation et démodulation AM en MATLAB

% Ce script illustre la modulation d'amplitude avec


porteuse (DSB-LC)
% et deux méthodes de démodulation : cohérente
(synchrone) et par détection d'enveloppe.
% Paramètres modifiables pour explorer différents cas
(indice de modulation, fréquences).

clear; close all; clc;

%% Paramètres du système
fs = 50000; % Fréquence d'échantillonnage
(Hz)
T = 0.1; % Durée du signal (s)
t = 0:1/fs:T-1/fs; % Vecteur temps
N = length(t); % Nombre d'échantillons

% Signal modulant (message)


fm = 100; % Fréquence du message (Hz)
Am = 1; % Amplitude du message
m = Am * sin(2*pi*fm*t); % Signal modulant (sinusoïdal
pur)

% Porteuse
fc = 2000; % Fréquence porteuse (Hz)
Ac = 2; % Amplitude de la porteuse

% Indice de modulation (µ = Am / Ac pour éviter la


surmodulation)
mu = Am / Ac; % µ < 1 pour éviter la
surmodulation
fprintf('Indice de modulation : %.2f\n', mu);

%% Modulation AM (DSB-LC)
% Signal AM : s(t) = (Ac + m(t)) .* cos(2π fc t)
s_am = (Ac + m) .* cos(2*pi*fc*t);

%% Démodulation cohérente (synchrone)


% On multiplie par la porteuse locale (supposée
synchrone en phase et fréquence)
s_demod_coherent = s_am .* cos(2*pi*fc*t);

% Filtrage passe-bas pour récupérer le message


% Conception d'un filtre passe-bas de type Butterworth
f_cut = 500; % Fréquence de coupure (Hz) >
fm mais << fc
[b, a] = butter(5, f_cut/(fs/2), 'low'); % Filtre
d'ordre 5
m_rec_coherent = filter(b, a, s_demod_coherent);

% Compensation du gain (facteur 2 dû à la


multiplication, et suppression de la composante DC)
m_rec_coherent = 2 * m_rec_coherent -
mean(m_rec_coherent); % Ajustement

%% Démodulation par détection d'enveloppe (redressement


+ filtre passe-bas)
% Redressement (valeur absolue)
s_rect = abs(s_am);

% Filtrage passe-bas (même filtre que précédemment)


m_rec_envelope = filter(b, a, s_rect);

% Suppression de la composante continue et


normalisation
m_rec_envelope = m_rec_envelope - mean(m_rec_envelope);
m_rec_envelope = m_rec_envelope * (Am /
max(m_rec_envelope)); % Ajustement d'amplitude

%% Affichage des résultats


figure('Name', 'Modulation et démodulation AM');

% Signal modulant original


subplot(3,2,1);
plot(t, m);
xlabel('Temps (s)'); ylabel('Amplitude');
title('Signal modulant original m(t)');
xlim([0 0.02]); % Zoom pour voir les détails

% Porteuse
subplot(3,2,2);
plot(t, cos(2*pi*fc*t));
xlabel('Temps (s)'); ylabel('Amplitude');
title('Porteuse cos(2πfc t)');
xlim([0 0.002]);

% Signal AM modulé
subplot(3,2,3);
plot(t, s_am);
xlabel('Temps (s)'); ylabel('Amplitude');
title('Signal modulé AM');
xlim([0 0.02]);

% Signal démodulé cohérent


subplot(3,2,4);
plot(t, m_rec_coherent, 'r', t, m, 'b--');
xlabel('Temps (s)'); ylabel('Amplitude');
title('Démodulation cohérente');
legend('Reconstruit', 'Original');
xlim([0 0.02]);

% Signal démodulé par détection d'enveloppe


subplot(3,2,5);
plot(t, m_rec_envelope, 'g', t, m, 'b--');
xlabel('Temps (s)'); ylabel('Amplitude');
title('Détection d''enveloppe');
legend('Reconstruit', 'Original');
xlim([0 0.02]);

% Spectre du signal AM (pour visualisation)


subplot(3,2,6);
f = linspace(-fs/2, fs/2, N);
S_AM = fftshift(fft(s_am));
plot(f, abs(S_AM)/N);
xlabel('Fréquence (Hz)'); ylabel('Amplitude');
title('Spectre du signal AM');
xlim([-3000 3000]);
grid on;

%% Vérification de la qualité
% Calcul de l'erreur quadratique moyenne (EQM)
eqm_coherent = mean((m - m_rec_coherent).^2);
eqm_envelope = mean((m - m_rec_envelope).^2);
fprintf('EQM (démodulation cohérente) : %.4f\n',
eqm_coherent);
fprintf('EQM (détection d''enveloppe) : %.4f\n',
eqm_envelope);

Vous aimerez peut-être aussi