基于频域频谱的FFT

时间:2014-05-05 16:38:40

标签: matlab fft dft

我有一个功能,我想在频域上绘制FFT。

t=0:0.01:60;

y = sin(2*pi*0.33*t)+sin(2*pi*0.23*t)+sin(2*pi*0.1*t);

正如您所看到的,峰值应该在0.1,0.2,0.33频率上,但是当我尝试绘制它时,峰值不在这一点上。

我尝试过FFT,DFT,但它们都没有按照我的意愿工作。此外,我希望他们的FFT峰值在这些频率下等于1。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果Fs是采样率(听到100 Hz),那么频率箱的长度为(t)/ Fs Hz。由于您希望您的垃圾箱间隔100 Hz,因此您需要更长的信号。试试这个

Fs=100; %sample rate
t=0:1/Fs:(100-1/Fs);  %10,000 samples long
F=[0:length(t)-1]/length(t)*Fs; %where the bins are
y = sin(2*pi*0.33*t)+sin(2*pi*0.23*t)+sin(2*pi*0.1*t); 
Y=abs(fft(y))/(length(y)/2);  %normalize by the signal length
figure(1);
plot(F,Y)
xlim([0 1]); %zoom in to the part of interest