【发布时间】:2014-02-06 10:03:21
【问题描述】:
我正在玩 FFT,但似乎无法获得预期的结果。我有一个声音片段,是从放置在模拟时钟上的麦克风录制的。所以它每秒都有声音。
[wave,fs]=wavread('clock.wav');
t=0:1/fs:(length(wave)-1)/fs;
plot(t,wave);
n=length(wave)-1;
f=0:fs/n:fs;
wavefft=abs(fft(wave));
plot(f,wavefft);
这是我正在使用的代码。以下是结果。
我应该在 1hz 看到一个巨大的尖峰,但我没有。
FFT 之后是声波。
【问题讨论】:
-
您应该意识到,在您的第一张图像中,“x”轴并不代表实际频率。当您执行 FFT 时,结果在 0Hz 是对称的,您可以清楚地看到您的 FFT 在 4000 左右是对称的。所以结果可能是正确的,但你没有正确绘制它。
-
@AnderBiguri 没关系,因为频谱在 4000 左右是周期性的,在这种情况下是 fs/2。此格式是
fft函数的默认格式。要显示零附近的频谱,您应该使用fftshift。 -
@Adiel 你说的很对,我只是快速浏览了一下问题,我错了。
-
@adiel 谢谢!我会试试这个,让你知道它是否有效!。
-
我使用了 fft shift,得到了更好的结果。我在彼此相等的距离处得到多个峰。这是因为峰很尖,所以使用了正弦/余弦的倍数来制作峰?
标签: matlab audio signal-processing fft