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

Algorithmes et structures de données Discussion :

FFT avec des réels


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Par défaut FFT avec des réels
    Bonjour,
    dans le cadre d'un projet personnel, j'essaye d'analyser les fréquences d'un signal sonore enregistré.

    J'en suis au moment où j'ai un suite de valeurs, comprises entre -1.0 et +1.0 pour chaque instant de mon enregistrement.
    Je cherche donc à calculer la FFT, mais, après avoir cherché sur ce forum et sur google, j'ai l'impression que la FFT se calcule sur des complexes et non des réels.

    Que faire alors ? J'ai extrait mes "points" d'un fichier AIFF sous forme de float, puis je les ai normalisés, mais je ne vois pas comment en faire des nombres complexes. Il doit bien existe une FFT pour les réels...

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Je cherche donc à calculer la FFT, mais, après avoir cherché sur ce forum et sur google, j'ai l'impression que la FFT se calcule sur des complexes et non des réels.
    Exact. FFT => complexe.

    Que faire alors ? J'ai extrait mes "points" d'un fichier AIFF sous forme de float, puis je les ai normalisés, mais je ne vois pas comment en faire des nombres complexes.
    hum... soit "a" un réel, alors: a = a+0*i = le complexe (a,0)

    Il doit bien existe une FFT pour les réels...
    Oui, ca s'appelle une transformée rapide en cosinus, mais c'est nettement moins optimisé que de faire une FFT. Donc autant faire une FFT.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Par défaut
    oui, j'avais bien pensé à ça, mais je me suis dit que c'était bien se compliquer la vie (d'utiliser un complexe comme un réel). Merci.

  4. #4
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Hé bien non c'est bien plus simple. Utilise un complexe de partie imaginaire 0
    Le rasoir d'Occam

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Par défaut
    oui j'ai fait ainsi et ça marche bien, le calcul est suffisament rapide pour que je ne preocupe pas plus de ce complexe réel.

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Oui, ca s'appelle une transformée rapide en cosinus, mais c'est nettement moins optimisé que de faire une FFT. Donc autant faire une FFT.
    Faux
    Une FFT sur des réels n'est pas la même chose qu'une DCT.
    La FFT d'un signal réel est à symmétrie conjuguée complexe.
    En fait une DCT, c'est une FFT sur un signal pair.

    Pour faire une FFT sur des réels, on peut effectivement utiliser une FFT complexe, il existe également des algos grosso-modo 2 fois plus rapides.

  7. #7
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Charlemagne Voir le message
    Pour faire une FFT sur des réels, on peut effectivement utiliser une FFT complexe, il existe également des algos grosso-modo 2 fois plus rapides.
    Est-ce que c'est des algo différents ou bien c'est simplement de la propagation de 0 dans les algos de FFT complexe?

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Est-ce que c'est des algo différents ou bien c'est simplement de la propagation de 0 dans les algos de FFT complexe?
    L'algo sur le fond il est le même.
    Mais il exploite le fait que le résultat sera à symétrie complexe conjuguée, et il y a 2 fois moins d'opérations à calculer, donc 2 fois plus rapide.

  9. #9
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Charlemagne Voir le message
    Faux
    Une FFT sur des réels n'est pas la même chose qu'une DCT.
    La FFT d'un signal réel est à symmétrie conjuguée complexe.
    En fait une DCT, c'est une FFT sur un signal pair.
    Oui, bon, c'est vrai. La DCT impose des conditions aux limites sur le signal (DCT = somme de cosinus => signal pair).

    Mais, à quelques constantes près, la DCT ressemble quand même beaucoup a la partie réelle de la DFT.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Oui, bon, c'est vrai. La DCT impose des conditions aux limites sur le signal (DCT = somme de cosinus => signal pair).

    Mais, à quelques constantes près, la DCT ressemble quand même beaucoup a la partie réelle de la DFT.
    Je ne nie pas qu'elles sont de la même famille.

    Mais c'est plus qu'une histoire de constantes.
    D'ailleurs il est possible de calculer une DCT à l'aide d'une FFT, moyennant quelques multiplications avec des racines unitaires, et des réarrangements de l'ordre de l'échantillonnage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/11/2014, 08h18
  2. [Débutant] FFT avec des NaN et des NaNi
    Par titus2709 dans le forum MATLAB
    Réponses: 0
    Dernier message: 29/06/2011, 14h17
  3. Corrélation, fft d'une image avec des zones transparentes
    Par Fiabulu dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 24/01/2011, 11h31
  4. Réponses: 6
    Dernier message: 02/09/2006, 01h23
  5. compatibilité des réels avec pascal (pour fichier de record)
    Par jacquesberger dans le forum Langage
    Réponses: 2
    Dernier message: 12/08/2005, 19h58

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