Finding the main frequency after fft
Mostrar comentarios más antiguos
Hi,
I've got these blocks in simulink:
Sine Wave -> Buffer -> Matrix sum -> Matlab function.
I have to find the frequency of the input, so I wrote some code in Matlab function (by the http://www.mathworks.com/help/techdoc/ref/fft.html) :
{
function [freq, amp] = fcn(u)
%#codegen
Fs=2000;
T=1/Fs;
L=length(u);
t = (0:L-1)*T;
NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(u,NFFT);
f = Fs/2*linspace(0,1,NFFT/2+1);
amp = abs(max(Y));
}
It's working properly, I'm getting the maximum value, but I can't get from code frequency of maxium value :/ how Can I get it? Thank You for response.
Best regards, Pawel
Respuesta aceptada
Más respuestas (1)
Pawel Burzynski
el 17 de Sept. de 2011
0 votos
3 comentarios
Wayne King
el 17 de Sept. de 2011
Glad it's working. Your mismatch is likely due to your frequencies not falling directly on a DFT bin.
Wayne
Pawel Burzynski
el 23 de Sept. de 2011
Wayne King
el 23 de Sept. de 2011
Can you please provide code? It is hard to say the source of the error without a coded example.
Categorías
Más información sobre Spectral Measurements en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!