IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Signal Discussion :

Amplitude d'une fft


Sujet :

Signal

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 25
    Points : 25
    Points
    25
    Par défaut Amplitude d'une fft
    Bonjour,

    il y a un truc que je ne comprend pas avec la fonction fft de Matlab : je crée un signal somme de 3 sinus et j'en prend la fft. Je retrouve bien mes 3 fréquences par contre j'ai exactement un facteur 2 dans les amplitudes et je ne vois pas pourquoi. Je suis loin d'être experte en traitement du signal donc il y a surement une subtilité qui m'échappe mais j'avais l'impression d'après les algo de DFT que je devais récupérer les amplitudes avec cette méthode.

    Voici le code que j'effectue :

    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
    29
    30
    31
    32
    T = 0:0.01:10;
    T = T';
    x1 = 0.5*sin(2*pi*2*T);
    x2 = 1.2*sin(2*pi*5.4*T);
    x3 = 0.7*sin(2*pi*7*T);
    y = x1+x2+x3;
     
    N = length(y);
    duree = max(T)-min(T);
    Delta_T = duree/N;
    Fe = N/duree;
    Delta_F = 1/duree;
     
    xfft = 1/N*fft(y);
    mag = abs(xfft);
    freq = 0:Delta_F:(Fe-Delta_F);
    freq = freq';
     
    figure(2)
    hold all;
    plot(freq,mag);
    legend('abs');
    xlabel('Freq in Hz');
    title('FFT');
    box on;
    set(gca,'Xlim',[0 100]);
    grid on;
     
    figure(1)
    hold all;
    plot(T,y)
    grid on
    quelqu'un peut-il m'éclairer ?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Bonjour,

    Tu as juste ton amplitude divisée par deux car tu as un spectre "two-sided".

    Pour avoir un spectre "single-sided", tu dois multiplier par deux la partie réelle de la sortie de la FFT. Tu as la réponse dans l'aide de la fft :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    % Plot single-sided amplitude spectrum.
    plot(f,2*abs(Y(1:NFFT/2+1))) 
    title('Single-Sided Amplitude Spectrum of y(t)')
    xlabel('Frequency (Hz)')
    ylabel('|Y(f)|')
    Cordialement,
    Christophe Halgand
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

Discussions similaires

  1. Programmation d'une FFT
    Par sgievounet dans le forum Simulink
    Réponses: 2
    Dernier message: 16/05/2008, 22h59
  2. Réponses: 0
    Dernier message: 22/01/2008, 21h45
  3. Ajustement des paramètres d'une FFT via pymedia (mp3)
    Par Svart26 dans le forum Calcul scientifique
    Réponses: 5
    Dernier message: 08/06/2007, 08h50
  4. normalisation d'une FFT
    Par kirikette dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 06/06/2007, 09h52
  5. Une FFT tres rapide
    Par JuJu° dans le forum Autres éditeurs
    Réponses: 13
    Dernier message: 06/11/2003, 14h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo