How to plot FFT?

14 次查看(过去 30 天)
Sara Boznik
Sara Boznik 2023-9-9
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')

采纳的回答

Paul
Paul 2023-9-9
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 个评论
Sara Boznik
Sara Boznik 2023-9-9
Thank you so much, I am satisfied with that result.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Fourier Analysis and Filtering 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by