Effacer les filtres
Effacer les filtres

can I use FFT to determine the variable frequency?

2 vues (au cours des 30 derniers jours)
Ivy
Ivy le 30 Juil 2011
Hi All.
Can I use Fourier transform to determine the variable frequency?Below is the code. If the frequency perturbation(rand/10) is small,the main frequency array(xx) contains the same value. If the frequency perturbeation(rand/10) is large, such as rand,the value in main frequency array(xx) does NOT make sense.
Is there any way I can find the variable frequency?
I appreciate any of your advice.
Ivy
clear all;
clc;
Fs=1000;
T=1/Fs;
L=1000;
t=(0:L-1)*T;
for i=1:1:10000 %variable frquency signal.
x(i)=0.7*sin(2*pi*(50+rand/10)*T*(i-1));
end
for k=1:1:5000
NFFT =1024;
Y=fft(x(k:1024+k),NFFT);
f= 100*linspace(0,1,100);
[C,index]=max(abs(Y(1:100)));
xx(k)=f(index);
end

Réponse acceptée

Rick Rosson
Rick Rosson le 31 Juil 2011
You may want to try the spectrogram function. For more information:
>> doc spectrogram
HTH.
Rick
  2 commentaires
Ivy
Ivy le 31 Juil 2011
Thank you, Rick.
I will look through it.
Ivy
Ivy le 31 Juil 2011
Hi Rick,
I have use the following code to get the variable frequency.But I can't get the result(frequency increase from 50 to 10050). Could you please correct me?
Thanks!
Ivy
clear all;
clc;
Fs=1000;
T=1/Fs;
L=1000;
t=(0:L-1)*T;
for i=1:1:10000 %variable frquency signal.
x(i)=0.7*sin(2*pi*(50+i)*T*(i-1));
end
NFFT =1024;
[S,F,T,P] = spectrogram(x,256,255,256,1E3);
surf(T,F,10000*log10(P),'edgecolor','none'); axis tight;
view(0,90);

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Parametric Spectral Estimation dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by