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 :

Signal audio et fft


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 36
    Points : 26
    Points
    26
    Par défaut Signal audio et fft
    Bonjour à tous !!

    J'ai un fichier audio au format wav.
    Sous matlab, je le récupère avec un wavread et je stocke alors les échantillons dans y (variable utilisée dans l'aide)

    Ensuite, pour avoir le spectre d'amplitude de ce signal je dois faire un abs(fft(y)) pour avoir les réels et abs(ifft(y)) pour les imaginaires.

    Jusque là on est certainement d'accord.

    Ce que je ne comprend pas c'est ce que fais la fonction fft.

    Car je dois implémenter ce principe décris au dessus, sans utiliser matlab.
    J'ai une fonction fft mais qui requiert à la fois les imaginaires et les réels, comment faire pour les prendre sachant que je n'ai que les y.

    Merci

  2. #2
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonsoir,

    Est-ce que tu veux reprogrammer la fonction fft sous un autre langage.

    Tu peux montrer ton code, on essayera de voir ...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    En fait en Java, j'ai cette méthode :

    public static Complex[] fft(Complex[] x)

    avec ce constructeur :
    public Complex(double real, double imag)

    ET je ne sais pas quoi donner comme paramètres sachant que je n'ai que mon tableau de y

  4. #4
    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
    Bonjour.
    Tu peux faire le calcul "à la main" un peu long !. Résultat dans sum :
    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
    clear
    Fs=4410;
    T=1/Fs;
    t = 0:T:0.5;
    N=length(t);
    y = 2*sin(2*pi*50*t)+5*sin(2*pi*120*t)+ 0.5*randn(length(t));
    f = linspace(0,Fs/2,N/2);
    for k=1:N
        sum=0;
      for n=1:N
        sum =sum+ y(n)*exp(-j*2*pi*(k-1)*(n-1)/N);
    end
     X(k) =sum/N;
    end
    h=semilogx(f,2*abs(X(1:floor(N/2))));
    xlabel('Frequence [Hz]');
    ylabel('Amplitude');grid
    set(h,'LineWidth',1,'Color','r')
    axis([1 1E4 0 6])

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Merci, là dessus je suis d'accord.
    Mais ma question reste la même quelle est la partie imaginaire et la aprtie réelle que je donne au calcul de la fft ?

    Tkx

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2008
    Messages : 56
    Points : 77
    Points
    77
    Par défaut
    Citation Envoyé par Webby1234 Voir le message
    pour avoir le spectre d'amplitude de ce signal je dois faire un abs(fft(y)) pour avoir les réels et abs(ifft(y)) pour les imaginaires.
    Bonjour,

    Ben, non, je pense pas que ça marche... pour la partie réelle : real(fft(y))
    et pour la partie imaginaire : imag(fft(y))

    le abs(fft(y)) c'est le module de ton spectre. Pour avoir la phase, il doit y avoir une fonction arg(fft(y)), ou sinon tu fais atan2(imag(fft(y))/real(fft(y))).

    Le signal que tu lis dans le fichier wav est réel. Sa partie imaginaire est donc nulle...

    Yann

Discussions similaires

  1. FFT d'un signal audio
    Par appolin dans le forum Signal
    Réponses: 1
    Dernier message: 25/12/2008, 21h36
  2. Amplifier un signal audio
    Par flammeon dans le forum C++
    Réponses: 13
    Dernier message: 25/09/2006, 17h27
  3. Récuperer le signal audio d'un fichier .wav
    Par vienin dans le forum Multimédia
    Réponses: 2
    Dernier message: 11/10/2005, 17h25
  4. [TMS320C6416] FFT et IFFT sur un signal audio...
    Par 0x4e84 dans le forum Autres architectures
    Réponses: 1
    Dernier message: 18/04/2005, 21h21
  5. Réponses: 2
    Dernier message: 08/11/2004, 23h31

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