Can the amplitude be plotted in dB?
10 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Taylor Gray
il 12 Mar 2019
Commentato: Star Strider
il 21 Lug 2020
In the code and figure below I have located peaks in an audio signal using the frequency domain and I can't figure out how to have the amplitude plotted in dB. Could anyone help me please?
[audio_file, Fs] = audioread("Handgun.wav");
L = size(audio_file,1);
Ts = 1/Fs; % Sampling Interval
Fn = Fs/2; % Nyquist Frequency
FT_af = fft(audio_file)/L; % Fourier Transform
Fv = linspace(0, 1, fix(L/2)+1)*Fn; % Frequency Vector
Iv = 1:numel(Fv); % Index Vector
[PksL,LocsL] = findpeaks(abs(FT_af(Iv,1))*2, 'MinPeakHeight',0.006, 'MinPeakDistance',20);
[PksR,LocsR] = findpeaks(abs(FT_af(Iv,2))*2, 'MinPeakHeight',0.006, 'MinPeakDistance',20);
figure(1);
semilogx(Fv, abs(FT_af(Iv,2))*2), xlabel('Frequency, Hz'),ylabel('magnitude');
hold on
plot(Fv(LocsR), PksR, '^r', 'MarkerFaceColor','r')
hold off
xlabel('Frequency (Hz)')
ylabel('Amplitude')
title('Left Channel')
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/208158/image.png)
0 Commenti
Risposta accettata
Star Strider
il 13 Mar 2019
Try this:
semilogx(Fv, 20*log10(abs(FT_af(Iv,2))*2)), xlabel('Frequency, Hz'),ylabel('magnitude');
That will convert the amplitudes to dB. The y-axis will reflect those changes, however the tick marks will not be in integer powers-of-10 such as with your x-axis and the semilogx call. You will have to format the y-axis ticks yourself.
2 Commenti
Star Strider
il 21 Lug 2020
Brad — The fft function creates a symmetric result, with the second half being the complex-conjugate of the first half, the total signal energy being divided approximately evenly between the two halves. In a single-sided Fourier transform, it is then necessary to multiply the abs() of the result by 2 in order to approximate the original signal amplitude. Here, I multiply by 2 prior to the dB transformation.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Spectral Measurements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!