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

Calcul scientifique Python Discussion :

calculer fft d'un signal sinusoïdale


Sujet :

Calcul scientifique Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 1
    Points : 2
    Points
    2
    Par défaut calculer fft d'un signal sinusoïdale
    bonjour,
    mon projet consiste à analyser des signaux à fréquence inconnu dans le but d'en extraire les composantes fréquentielles, pour se faire, j'ai créer un signal signal sinusoïdale que j'ai stocker dans un fichier csv (pour simuler après les signaux que je vais récupérer pour analyse), puis j'essai avec mon code d'extraire la fft pour en extraire les harmoniques
    mon problème est que le code que j'ai me renvoies un spectre erroné.
    voila mon 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
    import numpy
    import matplotlib.pyplot as plt
    from matplotlib.pyplot import *
    from scipy.fftpack import fft
    x=numpy.genfromtxt(r'C:\Users\souag\Desktop\pywav\sinus.csv', delimiter=',')
    time=x[:,][:,0]
    sine=x[:,][:,1:5]
    print (sine[0:30])
    time=time-time[0]
    plt.subplot(2,1,1)
    plt.plot(time,sine,'r')
    axis([0,2,-2,4])
    grid()
    T=200.0
    fe=10.0
    Te=1/fe
    N=int(T*fe)
    tfd=numpy.fft.fft(sine)
    f=numpy.arange(0,N)
    figure(figsize=(10,4))
    vlines(f,[0],numpy.absolute(tfd),'b')
    xlabel('f')
    ylabel('C')
    axis([0,20,0,10])
    grid()
    Images attachées Images attachées  

  2. #2
    Membre habitué
    Homme Profil pro
    Vagabong étudiant en annalyse du signal.
    Inscrit en
    Avril 2019
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Vagabong étudiant en annalyse du signal.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2019
    Messages : 123
    Points : 162
    Points
    162
    Par défaut
    Il ne vous renvoi pas un spectre foireux, c'est normal que vous ne retrouviez pas seulement les harmonique de vos sinusoïde de départ car votre signale est a support fini dans le temps.
    Donc les maths disent que vous convolez votre spectre que vous attendez avec un sinus cardinal! Houla en gros ça veut dire que c'est mathématiquement pas possible d'avoir un spectre parfait.
    Mais pas de panique! il existe des solutions! !
    Vous pouvez prendre un signal de départ plus long (disons au pif au moins 10 fois la période la plus grande de vos sinusoïdes de départ).
    Si vraiment vous pouvez pas faire ça, et bien ça se complique un peu, regarder les philtres anti repliement et ou les différentes fenêtres (j'ai Haming en tête mais il y en a d'autre).

Discussions similaires

  1. FFT avec le signal d'un fichier WAVE
    Par rominous41 dans le forum Débuter
    Réponses: 8
    Dernier message: 24/05/2010, 15h57
  2. FFT d'un signal
    Par prologO dans le forum Signal
    Réponses: 6
    Dernier message: 15/01/2010, 12h22
  3. FFT d'un signal wav
    Par Brinouchette dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 19/10/2009, 09h37
  4. FFT d'un signal audio
    Par appolin dans le forum Signal
    Réponses: 1
    Dernier message: 25/12/2008, 20h36
  5. FFT d'un signal par Delphi
    Par bahja_83 dans le forum Langage
    Réponses: 2
    Dernier message: 20/05/2008, 08h47

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