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 :

Conversion magnitude en dB


Sujet :

Signal

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut Conversion magnitude en dB
    Bonjour à tous,

    Pour un projet je dois pouvoir effectuer un traitement d'un enregistrement audio avec MatLab. Le but étant de ressortir les dB pour chacune des fréquences du signal.

    Pour l'instant je teste sur un fichier wav qui est censé avoir une fréquence de 450 Hz constant.

    En regardant votre forum j'en suis arrivé au résultat suivant :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    file = 'C:\Users\Mick\Desktop\tuning_fork_A4';
    [y,Fs,bits] = wavread(file);
     
    Nsamps = length(y);
    t = (1/Fs)*(1:Nsamps)          %Prepare time data for plot
     
    %Do Fourier Transform
    y_fft = abs(fft(y));            %Retain Magnitude
    y_fft = y_fft(1:Nsamps/2);      %Discard Half of Points
    f = Fs*(0:Nsamps/2-1)/Nsamps;   %Prepare freq data for plot
     
    %Plot Sound File in Time Domain
    figure
    plot(t, y)
    xlabel('Time (s)')
    ylabel('Amplitude')
    title('Tuning Fork A4 in Time Domain')
     
    %Plot Sound File in Frequency Domain
    figure
    plot(f, y_fft)
    xlim([0 1000])
    xlabel('Frequency (Hz)')
    ylabel('Amplitude')
    title('Frequency Response of Tuning Fork A4')
     
    %Plot Sound File in Frequency Domain
    figure
    plot(f, mag2db(y_fft))
    xlim([0 1000])
    xlabel('Frequency (Hz)')
    ylabel('dB mag')
    title('Frequency Response of Tuning Fork A4')

    Le problème (enfin je pense que c'est un problème ...) étant que mon graphe de l'amplitude en fonction de la fréquence me montre bien un pic bien net à 450 Hz alors que celui des dB en fonction de la fréquence me montre un pic à 450 Hz mais une autre série de pics de moindre intensité autour. Pourtant ceux-ci sont à des valeurs assez hautes de dB (~ 1/2 du pic de 450 Hz).







    Est-ce normal?

  2. #2
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Bonjour,

    Oui, c'est normal : le calcul du gain en dB est par définition :

    Ce qui fait que pour des valeurs de gains comprises entre 0 et 1 tu obtiens des valeurs négatives (ici tu en as peu) alors que pour des valeurs supérieures à 1, tu obtiens des valeurs positives, mais plus ton gain est grand, plus ton gain en dB sera grand, mais de moins en moins vite (à cause du log).

    Exemple pour ton pic : log10(6000) est légèrement supérieur à 3 (car c'est 6*10^3)... donc c'est compris entre 3 et 4... et si tu multiplies ça par 20, tu obtiens bien un pic compris entre 3*20 = 60 et 4*20 = 80, et c'est ce que tu as sur ta courbe.

    Pour les autres valeurs, elles valent peut-être 10 vu ton graphique (environ) ==> log10(10) vaut 1 et 20*log10(10) vaut donc 20 environ... ce sont les valeurs que tu observes...

    Conclusion : ça m'a l'air tout à fait correct.

    Pour t'en convaincre, tu n'as qu'à faire le chemin inverse :

    Normalement, tu vérifies que Gbis = G.

    Par ailleurs, pour la culture générale : le bruit blanc est à 10-20 dB, le bruit d'un frigo à 40 db, le bruit d'une voiture bruyante à 60 dB, le bruit d'un avion qui décolle au niveau de son réacteur environ 100 dB... le bruit des cachalots : 180dB dans l'eau (l'intensité maximale que je connaisse.... c'est monstreux ça signifie 10^(180/20) = 10^9 = 1 milliard en intensité pure... attention aux tympans... heureusement que l'eau absorbe une grande partie du bruit)

    Cordialement,
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Un grand merci à toi pour cette réponse ;-)

    J'ai posté un autre topic pour compléter celui-ci (j'aurai peut-être dû répondre ici, si c'est le cas excusez-moi :S).

    Merci encore !

Discussions similaires

  1. Conversion Assembleur Motorola 68xxx en Intel 80xxx
    Par markham dans le forum Autres architectures
    Réponses: 3
    Dernier message: 22/11/2002, 21h09
  2. [MSXML] Comment empécher la conversion des entités ?
    Par nima dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/11/2002, 15h14
  3. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 13h35
  4. [Conversions] Millisecondes...
    Par agh dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 12h25
  5. Réponses: 2
    Dernier message: 05/06/2002, 13h29

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