Bonjour et merci d'avance,
Dans le cadre d'un TP à distance en traitement de signal, je dois répondre aux questions suivantes :
N'ayant pas très bien compris le concept de transformée de fourier discrète, je me suis dirigé sur internet afin de trouver des exemples de codes, voici ainsi mon programme matlab :
Cependant, j'ai bien l'impression que ce code n'affiche que le "pic" en f0 mais pas celui en -f0 : , ainsi, n'ayant que partiellement compris la partie "transformée de fourier" je me demandais ce qu'il me fallait modifier pour afficher tous les modules.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 clear all; A = [1,1,1,2,1,1,1,1]; F0 = [200,200,200,200,400,1000,1800,2200]; N = [1024,2048,2048,2048,2048,2048,2048,2048]; Fe = [1000,1000,2000,2000,2000,2000,2000,2000]; for i = 1:5 t = 0:1/Fe(i):1; subplot(2,3,i); x = A(i)*cos(2*pi*F0(i)*t+pi/4); plot(t,x); xlabel("Temps (s)"); ylabel("Amplitude"); axis([0 0.05 -1 1 ]); Y = fft(x); %calcul de la transformee de fourirer discrete P2 = abs(Y/N(i)); P1 = P2(1:N(i)/2+1); P1(2:end-1) = 2*P1(2:end-1); f = Fe(i)*(0:(N(i)/2))/N(i); plot(f,P1) title('Single-Sided Amplitude Spectrum of S(t)') xlabel('f (Hz)') ylabel('|P1(f)|') axis([-300 300 -0.2 1 ]); endfor end
Merci pour votre temps et votre compréhension.
Partager