Académique Documents
Professionnel Documents
Culture Documents
1
Le programme permettant de calculer la décomposition en série de Fourier d’un signal dent de scie est le suivant :
n=input('Entrer le nombre de coefficient n pour la synthèse ');
fo=10.
dt=1./(50*n*fo); % Incrément temporel
t=(0:dt:2/f0); % Création du temps sur deux périodes du signal par incrément de dt
Ao=A/2; % Valeur moyenne du signal
e=Ao; % Boucle de calcul de la somme
for i=1:n
an=0;
bn=(‐2*((‐1)^i))/(pi*i);
xn=an*cos(2*pi*fo*i*t)+bn*sin(2*pi*fo*i*t);
e=xn+e;
end
plot(t,e)
TP2: Transformée de Fourier en 1D: Calcul de la transformée de Fourier et affichage
ff = fft(f); % transformée de Fourier 1D du signal f (dans le plan complexe)
ff = fft(f,1024); % transformée de Fourier 1D du signal f, sur 1024 points régulièrement distribués dans [0,1]
plot(fftshift(abs(ff))); % fftshift : pour afficher les basses fréquences au centre
f1 = real(ifft(ff)); % transformée inverse 1D
Exercice 1 : Tapez ceci dans la fenêtre de commande :
lookfor fourier % affiche toutes les fonctions reliées à Fourier
Ensuite, utilisez "help" suivi du nom de la fonction qui vous intéresse pour avoir plus d'informations sur chacune
d’elles.
Exercice 2 : Pour trouver des échantillons de la transformée de Fourier d'un signal, il faut utiliser la fonction
"fft". Tapez dans la fenêtre de commande les lignes suivantes :
figure(1)
T = 0.01; % période d'échantillonnage
Fs = 1/T; % fréquence d'échantillonnage de 100 Hz
t = 0:T:1; % vecteur d’échantillonnage du signal et échelle de l’axe des x
x = sin(2*pi*10*t); % signal ayant une fréquence de 10 Hz
plot(t,x)
title('Signal')
xlabel('temps (ms)')
Q1 : Regardez le résultat avec d’autres fréquences d’échantillonnage (en diminuant T avec par exemple
0.001). Que remarquez-vous ? Changez aussi la fréquence de la sinusoïde (5, 2, … au lieu de 10).
Maintenant tapez ceci :
figure(2)
FFT_size = 2048;
X = fft(x,FFT_size);
2
f = (0:FFT_size/2)/(FFT_size/2)*Fs/2;
plot(f, abs(X(1:FFT_size/2+1))); % on voit bien que le signal est à 10 Hz
title('Signal en fréquence');
xlabel('Fréquence(Hz)');
ylabel('Amplitude');
Remarquez la composante à 10 Hz. Remarquez aussi qu'en utilisant "figure(1)" et "figure(2)" il a été possible
d'afficher des courbes dans des fenêtres différentes.
Q2 : Quelle est la taille de f, de X ? A quoi sert f ? A quoi sert l’instruction : « X(1:FFT_size/2+1)» ?
Q3 : Regardez la phase, la partie réelle et imaginaire de X.
Q4 : Pourquoi n’observe-t-on pas une simple composante fréquentielle à 10 Hz ?
Comparer avec le résultat de l’applet située à cette adresse :
En choisissant la fonction sinus, de fréquence 1000 Hz. Regardez le signal et son spectre, puis baisser la fréquence à
100 puis 10 Hz en faisant varier le nombre d’échantillons (« Number of samples »). Que constatez-vous ?
Exercice 3 : Transformée de Fourier inverse (ifft). Essayez ceci avec le signal défini auparavant :
inv = ifft(fft(x));
plot(t, inv)
Que constatez-vous ?
f = Fs/2*linspace(0,1,NFFT/2+1);
plot(f, 2*abs(Y(1:NFFT/2+1))) % Plot single-sided amplitude spectrum
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)'); ylabel('|Y(f)|')
Q5 : Que fait la fonction nextpow2 ? Que vaut NFFT ?
clear all;
close all;
t=0:0.001:1;
set(0,'defaultlinelinewidth',2);
A=5;%amplitude de signal
fm=input('Message frequency=');%entrée la fréquence du message
fc=input('Carrier frequency=');% entrée la fréquence du porteuse avec (f2>f1)
mi=input('Modulation Index=');%taux de modulation
Sm=A*sin(2*pi*fm*t);%signal message
subplot(3,1,1);% divisée le cadre en 3 parties le message apparaître dans la premiere division
plot(t,Sm);
xlabel('Time'); ylabel('Amplitude');
title('Message Signal');
grid on;
Sc=A*sin(2*pi*fc*t);%porteuse
subplot(3,1,2);
plot(t,Sc);
xlabel('Time');
ylabel('Amplitude');
title('Carrier Signal');
4
grid on;
Sfm=(A+mi*Sm).*sin(2*pi*fc*t);%AM Signal, l’amplitude varié d’apres le message (A+Message)
subplot(3,1,3);
plot(t,Sfm);
xlabel('Time');
ylabel('Amplitude');
title('AM Signal');
grid on; fréquence message=10, Porteuse=100, Taux modulation=1
Pour mieux comprendre la modulation en fréquence on essayé la simulation sur Matlab :
clear all;
close all;
fm=input('Message Frequency=');
fc=input('Carrier Frequency=');
mi=input('Modulation Index=');
t=0:0.0001:0.1;
m=sin(2*pi*fm*t);
subplot(3,1,1);
plot(t,m);
xlabel('Time');
ylabel('Amplitude');
title('Message Signal');
grid on;
c=sin(2*pi*fc*t);
subplot(3,1,2);
plot(t,c);
xlabel('Time');
ylabel('Amplitude');
title('Carrier Signal');
grid on;
y=sin(2*pi*fc*t+(mi.*sin(2*pi*fm*t)));
subplot(3,1,3);
plot(t,y);
xlabel('Time'); ylabel('Amplitude');
title('FM Signal'); grid on;
Message Frequency=140, Carrier Frequency=300, Modulation Index=1