problème dans ma fft sous matlab
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

problème dans ma fft sous matlab



  1. #1
    invitee6bd14f3

    problème dans ma fft sous matlab


    ------

    Bonjour à tous

    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é

    Merci d'avances!

    -----

  2. #2
    lou_ibmix_xi

    Re : problème dans ma fft sous matlab

    Il faut normaliser par le nombre de points utilisés pour le calcul de la fft

  3. #3
    invitee6bd14f3

    Re : problème dans ma fft sous matlab

    je crois l'avoir fait non? le facteur N-1 dans le calcul de f...?

  4. #4
    lou_ibmix_xi

    Re : problème dans ma fft sous matlab

    Non c'est Y qu'il faut diviser par le nb de points utilisé

  5. A voir en vidéo sur Futura
  6. #5
    invitee6bd14f3

    Re : problème dans ma fft sous matlab

    j'essaye j'ai ecrit:

    t = [0:0.1:60];
    x = square(t);
    T=0.1;
    t=[0:T:60];
    N=length(t); Y=fft(x)/(N-1); fs=1/T;
    f=[0:N-1]*fs;
    plot(f,abs(Y));

    mais ca ne change rien, j'ai toujours une croissance en 1/k² sur la fin du spectre mais l'amplitude est bonne je crois.

  7. #6
    invitee6bd14f3

    Re : problème dans ma fft sous matlab

    qqun sait quoi faire? svp... c'est relativement important

  8. #7
    lou_ibmix_xi

    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

  9. #8
    invitee6bd14f3

    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

  10. #9
    lou_ibmix_xi

    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

  11. #10
    invitee6bd14f3

    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?

  12. #11
    lou_ibmix_xi

    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...

  13. #12
    invitee6bd14f3

    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.

  14. #13
    invite1173dcc2

    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.

Discussions similaires

  1. fft sous matlab
    Par invite1178bc9c dans le forum Logiciel - Software - Open Source
    Réponses: 10
    Dernier message: 13/12/2009, 17h23
  2. MATLAB fft problème d'échantillonage
    Par invitefa571045 dans le forum Électronique
    Réponses: 5
    Dernier message: 04/04/2009, 14h01
  3. FFT sous Matlab
    Par inviteaf35a9bf dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 18/07/2008, 14h10
  4. FFT sous Matlab
    Par invite4a64a65d dans le forum Électronique
    Réponses: 2
    Dernier message: 30/08/2007, 22h19
  5. FFT sous Matlab
    Par invite45916ff7 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 03/06/2006, 00h47
Découvrez nos comparatifs produits sur l'informatique et les technologies.