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).
http://imageshack.us/a/img525/1999/prtscrcapture2v.png
http://imageshack.us/a/img849/6597/prtscrcapture.png
Est-ce normal?