How to plot FFT?

7 vues (au cours des 30 derniers jours)
Sara Boznik
Sara Boznik le 9 Sep 2023
Commenté : Sara Boznik le 9 Sep 2023
Hi,
I am trying to plot FFT of tuning fork. I know that peak must be at 440 Hz. I am trying with my Matlab code but nothing works. Please for help.
plot(t,p)
title 'Časovni potek zvočnega signala'
grid on
xlabel '{\itt} [s]'
ylabel '{\itp}'
m = length(p);
n = pow2(nextpow2(m));
y = fft(p,n);
figure(2)
f = (0:n-1)*(1/n)/10;
amplituda = abs(y).^2/n;
plot(f(1:floor(n/2)),amplituda(1:floor(n/2)))
xlabel('Frekvenca(Hz)')
ylabel('Amplituda')

Réponse acceptée

Paul
Paul le 9 Sep 2023
Hi Sara,
The frequency vector needs to be corrected. And for this data it's helpful to subtract out the mean before taking the fft.
% load in the data and run the original code
vilice
t = 1001×1
1.0e+00 * 0 0.0001 0.0002 0.0003 0.0004 0.0005 0.0006 0.0007 0.0008 0.0009
p = 1001×1
2.6691 2.6593 2.6508 2.6496 2.6447 2.6386 2.6435 2.6508 2.6557 2.6508
jCorrect expression for frequency
f = (0:n-1)*(1/n)*1e4;
Subtract mean
y = fft(p-mean(p),n);
amplituda = abs(y).^2/n;
figure
plot(f(1:floor(n/2)),amplituda(1:floor(n/2)))
xlim([200 600])
  1 commentaire
Sara Boznik
Sara Boznik le 9 Sep 2023
Thank you so much, I am satisfied with that result.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Fourier Analysis and Filtering dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by