【问题标题】:FFT based on frequency domain spectrum基于频域频谱的 FFT
【发布时间】:2014-05-06 02:36:54
【问题描述】:

我有一个函数,我想根据频域绘制 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) 它们在哪里?查看 FFT 手册页:mathworks.it/it/help/matlab/ref/fft.html。第一个示例正是您需要的。 2)然后它不是FFT,只是(例如)设置一个阈值并将上面的所有内容替换为1,使用lt(y, tv)替换下面的所有内容与tv另一个具有相同长度的向量。

标签: matlab fft dft


【解决方案1】:

如果 Fs 是采样率(听到 100 Hz),则频率区间的长度为 (t)/Fs Hz。由于您希望您的 bin 间隔 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 2011-02-05
    • 1970-01-01
    相关资源
    最近更新 更多