FFT - How to transform my amplitudes into dB
    180 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Jacques
 am 26 Jun. 2023
  
    
    
    
    
    Bearbeitet: Gabriele Bunkheila
    
 am 10 Dez. 2024
            Hello,
I have done a code to obtain the FFT of an audio recorded with Matlab. I'm getting my result in amplitude but I'd like to get it in dB in the frequency domain... Could someone please help me?
Here is my code and my curves:

Thank you for your help.
0 Kommentare
Akzeptierte Antwort
  Frantz Bouchereau
    
 am 10 Dez. 2024
        
      Bearbeitet: Gabriele Bunkheila
    
 am 10 Dez. 2024
  
      Here is a popular MATLAB doc page that explains the relationship between FFT and true power spectra: Power Spectral Density Estimates Using FFT. Use this to scale the FFT to obtain true power values. 
0 Kommentare
Weitere Antworten (1)
  Diya Tulshan
      
 am 26 Jun. 2023
        Hii Jacques,
I understand you want to plot the data in db.
Kindly look into the code given below, it should solve your problem:-
Fs = 16000;          % Sampling rate (Hz)
Channels = 1;        % Number of audio channels
bits = 16;           % Number of bits per sample
r = audiorecorder(Fs, bits, Channels);
duration = 10;
disp('Recording started');
recordblocking(r, duration);
disp('Recording stopped');
X = getaudiodata(r);
N = length(X);
f = (0:N/2) * (Fs/N);
t = (0:N-1) / Fs;
subplot(2,1,1);
plot(t, X);
xlabel('Time (s)');
ylabel('Amplitude');
title('Time Domain Plot');
Y = fft(X, N);
Y = abs(Y(1:N/2+1));
fftResult_dB = 20 * log10(Y); % covert into dB
subplot(2,1,2);
plot(f, fftResult_dB);
xlabel('Frequency (Hz)');
ylabel('Amplitude (dB)');
title('Frequency Domain Plot');
xlim([0, Fs/2]);
grid on;
 Hope this helps!
2 Kommentare
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




