Bonjour à tous,

J'ai fait un petit programme qui est sensé utiliser fft pour calculer les coefficients de fourier d'une fonction, puis "recréer" la fonction, sans utiliser ifft évidemment, pour vérifier si j'ai bien compris comment indèxe fft. Le but étant de pouvoir utiliser les coefficients de fourier pour mes autres programmes.

Voilà mon bout de code:

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
precision=500;
 
G=0:precision;
t=G*2*2*pi/500;
Y=cos(t);
 
Z=(fft(Y,precision+1))/(precision+1);
 
% ici je réorganise juste mes coefficients comme le ferait plus ou moins fftshift
 
reorgplus(1:precision/2)=0;
reorgmoins(1:precision/2)=0;
for i=1:precision/2
reorgplus(i)=Z(i+1);Z(i+1);
reorgmoins(i)=Z(precision+2-i); Z(precision+2-i);
end
 
reconstruc=@(x) Z(1);
 
for k=1:precision/2
 
    reconstruc=@(x) reconstruc(x)+reorgplus(k)*exp(j*(k)*x)+reorgmoins(k)*exp(-j*(k)*x);
 
end
 
plot(t,Y,t,(reconstruc(t)))
Le problème: Si je pose t=G*2*pi/500; je n’ai qu’une seule sinusoide et c’est parfait, la fonction que je reconstruit est identique ou presque à la fonction de départ. Si je pose t=G*2*2*pi/500; j’ai déjà trop d’oscillations par rapport à la fonction cosinus… Je ne comprend pas pourquoi. De plus dans mon exemple, j’utilise cosinus, le plus gros coefficient (et mathématiquement le seul coefficient non nul) devrait être Z(2), ce qui est le cas pour une seule période, mais pas pour les autres cas.

Je pense que l’erreur est basique mais je suis incapable de la trouver…

Merci d'avance.