Bonjour à tous

Veuillez m'excuser si je venais à poser ma question dans le mauvais forum

Je précise aussi que je viens de me mettre à Matlab et que par conséquent, mon niveau laisse un peu à désirer. Je possède une version 2008 de ce logiciel.

Dans le cadre d'un projet à l'université, je dois comparer différents fichiers waves à leurs homologues respectifs mp3. J'ai par ailleurs trouvé sur le net, une fonction permettant d'utiliser des fichiers mp3 sous Matlab (qui marche de manière identique à wavread et wavwrite). Le but de cette étude d'observer l'effet de la compression mp3 dans le domaine temporel puis fréquentiel pour des bitrates différents de mp3.

Au préalable, j'avais commencé mon étude sur Audacity. Mais niveau crédibilité scientifique, j'ai pensé que Matlab était beaucoup plus adapté. Matlab est aussi bien plus pratique pour comparer et présenter des graphes.

J'ai donc programmé une fonction toute simple permettant de visualiser le signal d'un fichier wave. J'ai cependant remarqué que l'amplitude du signal temporel est linéaire avec des valeurs comprises entre -1 et +1. J'aurais voulu convertir ces valeurs linéaires en décibels. J'imagine qu'il doit y avoir une formule ressemblant à du 20 log d'un quotient, mais impossible de mettre la main dessus. Pouvez-vous m'aider s'il vous plait ?

Voici le code que j'ai utilisé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
[x,fs]=wavread('fichier.wav');
temps = (1:length(x))/fs ; % axe temporel
plot(temps,x(:,1)) ; % oreille gauche
xlabel('Temps (s)') ;
ylabel('Amplitude') ;
title('Représentation temporelle du signal audio') ;
En vous remerciant par avance

Cordialement,