normalisation of frequency axis while using fft function in matlab

5 vues (au cours des 30 derniers jours)
Tejas
Tejas le 11 Fév 2011
Hi all, As a part of my code, I have got a filtered array Va, which contains 45592 samples.What I need to do now is obtain the frequency spectrum of the signal which should have the major component as 50Hz. However, on applying plot(abs(fft(Va))), though I am getting 2 large peaks(i think a peak and its mirror image) at 2 points,I am not able to assess the X-axis scale.It is running from 0 to 50000.The peak I am getting is at approximately the 26th point and also the 45570th point.How do I adjust the x-axis so I can see the frequency component in Hz? Also, I am not sure about the sampling frequency, because the array is obtained using a m code after large number of iterations.Can somebody help?Thanks in advance.

Réponse acceptée

Vieniava
Vieniava le 11 Fév 2011
You must know frequency sampling, Fs . Look at this code:
Fs= ; % insert here your frequency sampling in Hz
L=length(Va);
NFFT = 2^nextpow2(L);
Y = fft(Va,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
  6 commentaires
Tejas
Tejas le 12 Fév 2011
clear all
clc
close all
time=0:0.001:0.5;
Vm=230;
freq=50;
Va = Vm*sin(2*pi*freq*time);
Vieniava
Vieniava le 12 Fév 2011
Bulls eye! "time=0:0.001:0.5" that means your frequency sampling is 1/0.001 = 1000 Hz .

Connectez-vous pour commenter.

Plus de réponses (1)

ilyas
ilyas le 5 Juin 2012
What about the double-sided spectrum?
Thank you

Community Treasure Hunt

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

Start Hunting!

Translated by