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 :

Lien entre la periode d'échantillonnage pour faire un sinus et une FFT


Sujet :

Signal

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Points : 15
    Points
    15
    Par défaut Lien entre la periode d'échantillonnage pour faire un sinus et une FFT
    Bonjour,

    J'ai un problème lorsque je veux faire de la fft sur un sinus non perturbé et un sinus bruité. Je m'explique !


    Bon déclaration de qq variables dont je me sers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    freq = 1575.42e6; %frequence de la porteuse
    phi = 10; %dephasage de la porteuse
    periode = 1/freq;
    periode_echantillonnage = 0.001*periode;
    Dans un premier temps, je génère un sinus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for t=0:periode_echantillonnage:10*periode;
        v=v+1
     
        r(v)= sqrt(2*P)*cos(2*pi*freq*t+phi);
    ...
    end
    Les ... veulent dire qu'il y a autre chose dans la boucle (cf juste dessous).

    Ensuite je perturbe en amplitude et en phase ce sinus. Toujours dans la même boucle for j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for t=0:periode_echantillonnage:10*periode;
    ...
    s(v) = sqrt(2*P*delta_ampl)*cos(2*pi*freq*t+phi+delta_phi)
    delta_ampl et delta_phi sont générés de manière aléatoire dans une fonction que je n'ai pas détaillée ici.

    Voilà, j'ai donc un sinus "normal" et un sinus perturbé en phase et amplitude.
    Sur les fichiers joints ci-contre, le "normal" est en bleu, le perturbé en rouge.

    Jusque là, tout va bien.


    Je fais ensuite une dsp sous la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    S = fft(s,512);
    R = fft(r,512);
     
    Spsd = S.*conj(S);
    Rpsd = R.*conj(R);
    Sur la deuxième figure (psd.jpg), on voit bien que l'on trouve un sinus à 0.01 fois la fréquence d'échantillonnage.

    Lorsque j'effectue le calcul de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [amplitude_r indice_r] = max(Rpsd); %indice est l'indice de la matrice pour lequel Rpsd est max
    [amplitude_s indice_s] = max(Spsd);
     
    frequence_signal_normal_r = frequence(indice_r); %connaissant l'indice pour lequel il y a le max, on en déduit la fréquence
    frequence_signal_normal_s = frequence(indice_s);
     
     
    frequence_signal_normal = (1/periode_echantillonnage)*frequence_signal_normal_r %on dénormalise par rapport à la fréquence d'échantillonnage
    frequence_signal_scintille = (1/periode_echantillonnage)*frequence_signal_normal_s
    je trouve des fois des fréquences différentes pour le sinus original et le sinus perturbé mais avec une fréquence pour le sinus original qui est fausse. Je me dis donc que soit j'ai mal échantillonné, soit j'ai mal choisi mon nombre de points dans ma FFT.


    Voilà pour ma dsp. Or il se trouve que ma fréquence calculée grâce au code juste ci-dessus dépend et de l'échantillonnage dont je me suis servi au début et du nombre de points de ma FFT.

    Avec un échantillonnage comme j'ai choisi dans le code que je vous donne et un nombre de 512 points pour ma FFT, je retombe sur une fréquence (15754,2Hz) grâce à la FFT mais que ce soit pour le signal original ET le signal bruité. J'ai donc un problème de facteur. Je pense donc que là ma période d'échantillonnage est trop faible.

    C'est bien celà mon problème. Je m'attendais à avoir une différence de fréquence calculée par FFT sur mon signal perturbé.

    Est-ce que qqn voit une erreur dans ce que j'ai fait ou il n'y a rien à jeter et que malgré que mon signal soit perturbé, par FFT, je retrouve exactement la bonne fréquence ? En fait, je n'arrive pas à jongler (peut-être je pense à tort) entre le nombre de points pour mon échantillonnage de mes sinus et le nombre de points dans ma FFT.

    Si je n'ai pas été très clair (ce dont je suis sur), dîtes le moi, je réexpliquerai certains points !

    Merci
    Images attachées Images attachées   

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Salut.
    le nombre de points pour mon échantillonnage de mes sinus et le nombre de points dans ma FFT.
    Tu as essayé le nombre de point total :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    freq = 1575.42e6; %frequence de la porteuse
    phi = 10; %dephasage de la porteuse
    periode = 1/freq;
    periode_echantillonnage = 0.25*periode;
    t=0:periode_echantillonnage:10*periode;
    s= 10*cos(2*pi*freq*t+phi);
    Nx=length(s);
    w=(0:Nx-1)/Nx/periode_echantillonnage;
    S = fft(s,Nx);
    plot(w,abs(S))
    grid
    Pourquoi prends-tu une période d'échantillonnage si faible ?
    4 fois Shannon devrait suffire.

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Ce que j'appelle fréquence d'échantillonnage ici, c'est la fréquence entre deux points lorsque je fais mon sinus. Sachant que je suis à 1.5GHz, si je prends un quart comme tu le dis, ça me fait grosso modo 1 point tous les 380MHz... c'est un peu pas beaucoup !

    Mais comme tu dis, si je fais une FFT avec comme nombre de points length de mon vecteur, je ne retombe pas exactement sur la valeur de mon signal.

    Je tombe sur une fréquence de 1.57526e+009 pour 1.57542e+009. Et cette différence est quand même importante, cela fait presque 200MHz ! Cela vient-il donc de mon sinus qui ne contient pas assez de point ou de la FFT qui n'en a pas assez ?

Discussions similaires

  1. Distance entre deux groupes de points pour faire des binomes
    Par ImagingAllthe dans le forum MATLAB
    Réponses: 3
    Dernier message: 21/09/2012, 17h25
  2. Réponses: 1
    Dernier message: 28/04/2010, 18h17
  3. Problème pour faire l'histogramme d'une image type png
    Par Patchanka dans le forum Images
    Réponses: 9
    Dernier message: 28/05/2009, 10h04
  4. Existe-t-il un activeX pour faire copier/coller sur une image?
    Par bylka dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 22/10/2008, 11h46
  5. problème pour faire un insert avec une image
    Par vbcasimir dans le forum Modules
    Réponses: 3
    Dernier message: 02/11/2005, 09h21

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