matlab - Matlab中的FFT,出乎意料的结果

标签 matlab audio signal-processing fft

我正在使用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后跟声波。

最佳答案

您所看到的是您的麦克风记录的内容。标准麦克风正在过滤非常低的频率(即20 Hz以下),而声卡可能也在过滤低频。

每秒有一个滴答声并不意味着您会在FFT上看到1Hz的巨大峰值。如果要在1hz处看到一个巨大的峰值,请记录一个1Hz正弦信号。但是,正如我上面所说,请注意低频。声音系统测试的通常频率为1000 Hz。

以下是信号Clock.wav的时间 View (带有缩放)。我们可以看到它由许多谐波组成,并且我们可以清晰地看到看到它远不是1Hz的正弦波。

然后,我用低通二阶巴特沃斯滤波器对信号进行了滤波,截止频率为100Hz。

请在过滤前以黄色查看光谱,在过滤后以蓝色查看。


因此,我相信您的matlab代码中没有大问题。

关于matlab - Matlab中的FFT,出乎意料的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21599563/

相关文章:

java - 将视频或音频转换为文本而不播放?

android - Android 中的声音跟踪

flutter - Flutter中的背景音乐不起作用

iphone - 会说话的汤姆猫克隆应用程序

matlab - 根据函数值差异进行采样

matlab - 如何在 MATLAB 中将图形打印为带有嵌入希腊字母或公式的 pdf 文件?

c++ - 将 Matlab 内置函数转换为 C/C++

python - 根据 SNR 在图像上添加白噪声

iOS 信号生成模式不是预期的

Matlab 运算符 **