我有一个功能,我想在频域上绘制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。
有什么想法吗?
答案 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