Vous êtes sur la page 1sur 7

Correction TP 2:

1- Création d'un signal continu :

f = 50; % Fréquence en Hz

A = 1; % Amplitude en volts

t = 0:0.0001:0.2; % Vecteur temps en secondes

y = A*sin(2*pi*f*t); % Signal sinusoïdal

plot(t, y); % Tracer le signal dans le domaine temporel

xlabel('Temps (s)');

ylabel('Amplitude (V)');

title('Signal sinusoïdal de 50 Hz');

2- Calcul de la transformée de Fourier :


f = 50; % Fréquence en Hz

A = 1; % Amplitude en volts

t = 0:0.0001:0.2; % Vecteur temps en secondes

y = A*sin(2*pi*f*t); % Signal sinusoïdal

N = length(y); % Nombre d'échantillons

Fs = 1/(t(2)-t(1)); % Fréquence d'échantillonnage

fvec = linspace(0, Fs, N); % Vecteur de fréquence

Y = fft(y)/N; % Transformée de Fourier normalisée

% Tracer la magnitude de la transformée de Fourier

plot(fvec, abs(Y));

xlabel('Fréquence (Hz)');

ylabel('Magnitude');

title('Transformée de Fourier');
la partie réelle et la partie imaginaire de la transformée de Fourier :

f = 50; % Fréquence en Hz

A = 1; % Amplitude en volts

t = 0:0.0001:0.2; % Vecteur temps en secondes

y = A*sin(2*pi*f*t); % Signal sinusoïdal

N = length(y); % Nombre d'échantillons

Fs = 1/(t(2)-t(1)); % Fréquence d'échantillonnage

fvec = linspace(0, Fs, N); % Vecteur de fréquence

Y = fft(y)/N; % Transformée de Fourier normalisée

% Tracer la partie réelle et imaginaire de la transformée de Fourier

subplot(2,1,1);

plot(fvec, real(Y));

xlabel('Fréquence (Hz)');

ylabel('Partie réelle');

title('Transformée de Fourier - Partie réelle');

subplot(2,1,2);

plot(fvec, imag(Y));

xlabel('Fréquence (Hz)');

ylabel('Partie imaginaire');

title('Transformée de Fourier - Partie imaginaire');


B. Transformée de Fourrier de rect

t = -5:0.01:5; % Vecteur temps en secondes

rect = (abs(t) < 0.5); % Signal rectangulaire

% Tracer le signal rectangulaire

plot(t, rect);

xlabel('Temps (s)');

ylabel('Amplitude');

title('Signal rectangulaire');

la fonction "fft" de Matlab pour calculer la transformée de Fourier du signal. Utilisez aussi "fftshift" pour
représenter la transformée de fourrier.

t = -5:0.01:5; % Vecteur temps en secondes

rect = (abs(t) < 0.5); % Signal rectangulaire

N = length(rect); % Nombre d'échantillons

Fs = 1/(t(2)-t(1)); % Fréquence d'échantillonnage

fvec = linspace(-Fs/2, Fs/2, N); % Vecteur de fréquence

Y = fft(rect)/N; % Transformée de Fourier normalisée

Yshift = fftshift(Y); % Décalage de la transformée de Fourier

% Tracer la transformée de Fourier

plot(fvec, abs(Yshift));

xlabel('Fréquence (Hz)');

ylabel('Amplitude');

title('Transformée de Fourier du signal rectangulaire');


C. Génération d'un signal périodique

signal périodique x(t) de période T en utilisant une somme de sinus et cosinus de fréquences et
d'amplitudes choisies.

t = 0:0.001:T; % Vecteur temps en secondes

f0 = 1/T; % Fréquence fondamentale

n = 5; % Nombre d'harmoniques

A = [1, 0.5, 0.2]; % Amplitudes des harmoniques

f = f0*(1:n); % Fréquences des harmoniques

phi = [0, pi/2, pi]; % Déphasages des harmoniques

% Générer le signal périodique

x = zeros(size(t));

for i = 1:n

x = x + A(i)*cos(2*pi*f(i)*t + phi(i)) + A(i)*sin(2*pi*f(i)*t + phi(i));

end

% Tracer le signal périodique

plot(t, x);

xlabel('Temps (s)');

ylabel('Amplitude');

title(['Signal périodique avec ', num2str(n), ' harmoniques']);


2 Afficher le signal x(t) dans le domaine temporel sur une période

T = 1; % Période en secondes

t = 0:0.001:T; % Vecteur temps en secondes

% Calculer le signal périodique x(t)

x = % insérez ici la formule du signal périodique

% Tracer le signal sur une période

plot(t, x);

xlabel('Temps (s)');

ylabel('Amplitude');

title('Signal périodique sur une période');

3. Calcul de la série de Fourier pour le signal x(t)

Pour calculer la série de Fourier d'un signal périodique x(t) de période T, vous pouvez utiliser les
coefficients de Fourier a_n et b_n définis comme suit :

scssCopy code

a_n = (2/T) * integral(@(t) x(t).*cos(2*pi*n*t/T), 0, T); b_n = (2/T) * integral(@(t) x(t).*sin(2*pi*n*t/T),


0, T);

Dans ces expressions, n est un entier positif qui indique le numéro de l'harmonique (la fréquence) que
nous voulons calculer. La fonction integral est utilisée pour effectuer l'intégration numérique.

Pour calculer les coefficients de Fourier pour les N premières harmoniques, vous pouvez utiliser la
boucle suivante :

scssCopy code

N = 10; % Nombre d'harmoniques à calculer an = zeros(N, 1); % Initialisation des coefficients a_n bn =
zeros(N, 1); % Initialisation des coefficients b_n for n = 1:N an(n) = (2/T) * integral(@(t)
x(t).*cos(2*pi*n*t/T), 0, T); bn(n) = (2/T) * integral(@(t) x(t).*sin(2*pi*n*t/T), 0, T); end
Ceci calcule les coefficients de Fourier a_n et b_n pour les N premières harmoniques et stocke les
résultats dans les tableaux an et bn. Notez que nous avons initialisé ces tableaux à zéro à l'aide de la
fonction zeros avant de commencer la boucle.

Une fois que vous avez calculé les coefficients de Fourier, vous pouvez reconstruire le signal x(t) en
utilisant la formule de la série de Fourier :

scssCopy code

x_reconstruit = an(1)/2 + ... % Terme de la constante continue sum(an(2:end).*cos(2*pi*(1:N-1)*t/T) + ...


% Termes cosinus bn(2:end).*sin(2*pi*(1:N-1)*t/T)); % Termes sinus

Dans cette expression, x_reconstruit est le signal reconstruit à partir de la série de Fourier, et nous
avons utilisé la notation ... pour diviser la formule sur plusieurs lignes. Notez également que le premier
terme de la somme, correspondant à la constante continue, est calculé séparément de la boucle.

Vous pouvez maintenant tracer le signal original et le signal reconstruit pour vérifier que la série de
Fourier est une bonne approximation du signal d'origine. Voici un exemple de code :

T = 1; % Période du signal en secondes

N = 10; % Nombre de termes de la série de Fourier

t = 0:0.001:T; % Vecteur temps en secondes

% Calculer les coefficients a0, an, et bn de la série de Fourier

a0 = (2/T) * trapz(x(t), t);

an = zeros(1, N);

bn = zeros(1, N);

for n = 1:N

an(n) = (2/T) * trapz(x(t) .* cos(2*pi*n*t/T), t);

bn(n) = (2/T) * trapz(x(t) .* sin(2*pi*n*t/T), t);

end
4. Tracer le spectre en amplitude de la série de Fourier.

|F(f)| = sqrt(a0^2/2) + sqrt(an^2/2 + bn^2/2)

où a0, an, et bn sont les coefficients de Fourier de la série de Fourier. f est la fréquence en Hz, qui est
définie comme n/T.

Le code Matlab pour calculer le spectre en amplitude de la série de Fourier et tracer le résultat est le
suivant :

% Calculer l'amplitude de chaque harmonique

A0 = abs(a0);

An = zeros(1, N);

for n = 1:N

An(n) = sqrt(an(n)^2 + bn(n)^2);

end

% Tracer le spectre en amplitude

f = 0:1/T:N/T;

stem(f, [A0, An])

xlabel('Fréquence (Hz)')

ylabel('Amplitude')

title('Spectre en amplitude de la série de Fourier')

Vous aimerez peut-être aussi