Soutenez-nous
Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité régulier
    Profil pro
    Étudiant
    Inscrit en
    septembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 24
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2007
    Messages : 26
    Points : 6
    Points
    6

    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 :
    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 chevronné
    Homme Profil pro Jean-Charles
    Doctorant automatique
    Inscrit en
    janvier 2012
    Messages
    418
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean-Charles
    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 : 418
    Points : 664
    Points
    664

    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
    Invité régulier
    Profil pro
    Étudiant
    Inscrit en
    septembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 24
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2007
    Messages : 26
    Points : 6
    Points
    6

    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 !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •