Voilà, j'ai un signal à analyser que j'ai sous excel. Je voudrais réaliser un spectre de fourier mais la FFT ne renvoie que des nombre complexe. j'ai fait quelques recherche et j'ai compris que l'amplitude de mon signal est le module des nombres complexes. Mais cette amplitude est très élevé comparée au valeur de l'amplitude de mon signal en fonction du temps. me suis-je trompé sur cette amplitude? Est-ce bien le module des nombres complexes?
Je vous montre comment je réalise mon spectre.
T=0.1; // "période" d'échatillonnage
t=[0:T:60]; //longueur temporelle de signal
Y=fft(x); fs=1/T; N=length(t); //fft puis fréquence d'échantillonnage
f=[0:N-1]*fs/(N-1);
plot(f,abs(Y)); // mon spectre
Cependant quand je réalise cette procédure pour un signal carré symétrique j'ai bien une décroissance en 1/k² suivant l'ordre des harmonique mais j'ai une croissance aussi en 1/k² sur la fin de mon spectre et je ne comprend pas pourquoi. Je vous montre comment je l'ai écris:
t = [0:0.1:60]; //séquence temporelle pour avoir assez de scarré
x = square(t); //génère un signal carré symétrique
T=0.1;
t=[0:T:60];
Y=fft(x); fs=1/T; N=length(t);
f=[0:N-1]*fs/(N-1);
plot(f,abs(Y)); //spectre du signal carré
qqun sait quoi faire? svp... c'est relativement important
19/01/2010 - 08h28
lou_ibmix_xi
Date d'inscription
juin 2006
Localisation
Toulon
Âge
34
Messages
1 196
Re : problème dans ma fft sous matlab
Si c'est relativement important, on lit de la documentation sur la FFT de matlab.
Cette remarque étant faite, MATLAB génére une FFT avec les fréquences positives avant les fréquences négatives, donc l'abscisse de fréquences est définie par (si tu as utilisé N points pour la FFT à fréquence d'échantillonnage Fsr):
Code:
F = [(0:(N-1)/2) * (Fsr/N), ((N-1)/2:-1:0) * (Fsr/N)];
Dernière modification par lou_ibmix_xi ; 19/01/2010 à 08h29.
Motif: baniere code
Tant qu'il y à de la vis, il y a du tourne-vis
19/01/2010 - 19h31
tomran90
Date d'inscription
octobre 2006
Messages
13
Re : problème dans ma fft sous matlab
oui mais la, le vecteur frequence n'est pas de meme longueur que le vecteur amplitude. En tout cas c'est ce que me renvoie MATLAB. Et quand je regarde l'aide (ce que j'ai fait pendant pas mal de tps avant de poser ma question), ils ne definissent le vecteur fréquence comme ca mais je ne comprend pas non plus comment ils le définissent de maniere générale. D'où ma question sur cette abscisse des féquences. Donc quand je réalise mon "plot" : plot(Frs,abs(Y)) où Y est ma séquence de FFT, MATLAB me renvoie se problème de longueur de vecteurs. Sais- tu pourquoi?
Merci d'avance
20/01/2010 - 12h28
lou_ibmix_xi
Date d'inscription
juin 2006
Localisation
Toulon
Âge
34
Messages
1 196
Re : problème dans ma fft sous matlab
un exemple pas à pas...
Code:
N = 1024; % nb de points du signal _ET_ de la fft
Fs = 44100; % Frequence d'echantillonage
t = (0:N-1)' / Fs; % Support temporel
s = sin (2*pi*440*t); % Signal
S = fft (s);
f = (-N/2 : N/2 - 1) * Fs / N; % Support frequentiel remis dans l'ordre
plot (f, abs (fftshift(S)))
Je ne peux pas faire mieux
Tant qu'il y à de la vis, il y a du tourne-vis
28/01/2010 - 19h13
tomran90
Date d'inscription
octobre 2006
Messages
13
Re : problème dans ma fft sous matlab
merci pour l'exemple
J'ai enlevé le fftshift qui ne m'apporte rien dans mon étude mais je ne comprend tjrs pas pourquoi le spectre est symétrique. Est-ce parce que c'est comme ca que sont défini les FFT ou alors on peut obtenir de véritables spectres de Fourier comme ils sont définis pour des fonctions cosinus, sinus, ou carrés symétriques?
29/01/2010 - 11h13
lou_ibmix_xi
Date d'inscription
juin 2006
Localisation
Toulon
Âge
34
Messages
1 196
Re : problème dans ma fft sous matlab
je ne comprend tjrs pas pourquoi le spectre est symétrique
relit tes cours sur la transformée de Fourier...
Tant qu'il y à de la vis, il y a du tourne-vis
12/02/2010 - 21h00
tomran90
Date d'inscription
octobre 2006
Messages
13
Re : problème dans ma fft sous matlab
J'en ai même parlé à un prof d'info, ausi colleur de maths dans ma classe de PSI* et il sait très bien que le spectre n'est pas normal et qu'il n'y a qu'une décroissance en 1/k dans ce genre de signaux.
Désagréable, c'est bien le mot pour te décrire. Si tu veux aider les gens, sois au moins sympa et les prends pas pour des nuls (pour ne pas être vulgaire). J'ai résolu mon problème avec quelqu'un d'autre. Merci, au revoir.
11/04/2012 - 13h47
HeleneA
Date d'inscription
avril 2012
Messages
1
Re : problème dans ma fft sous matlab
Bonjour tomran90,
Si tu repasses par ce forum, je serai intéressée par la façon dont tu as résolu ton problème.
Si je l'ai bien compris, j'ai le même.
J'utilise Matlab/Simulink. J'envoie un signal "to workspace" dont je voudrais le spectre fréquentiel pour observer ses harmoniques.
Voici la copie de ce que j'ai mis dans l'éditeur.
f=(0:1e6); %1e6 points
spectre=fft(Van);
plot(f,abs(spectre),'r')
xlabel('Fréquence(Hz)');
ylabel('Amplitude');
title('Spectre FFT de la tension Van');
Je veille à ce que le nombre de points temporels soit le même que celui des fréquences.
Mais le spectre ne change pas. Seules les échelles sont multipliées ou divisées.
Or je voudrais simplement analyser un signal de manière fréquentielle, en pouvant modifier la plage de fréquences, c'est-à-dire observer le spectre de 0 à 10kHz ou de 0 à 500kHz etc...
J'observe décroissance en 1/k² au début et croissance en 1/k² en fin de spectre.
Merci d'avance si tu peux m'aider
Première fois que je poste un commentaire sur un forum.