2012-07-19 100 views
2

我有一点一个假设性的问题来理解这个概念..如何确定FFT结果指标频率并画出幅/频率图

比方说,我捕捉到一个单声道声音剪辑8000HZ的采样率,即4096字节的数据.. 通过一个大小为256的FFT提供第一个512字节(16位编码),将返回128个值,我将其转换为幅度。 所以我的频率这个输出是

FFT BIN #1 
0: 0*8000/256 
1: 1*8000/256 
. 
. 
127: 127*8000/256 

到目前为止好安永?所以现在我剩下3584字节的未处理数据了。所以我在512字节的数据上执行另一个256字节的fft。而得到的结果相同数量的.. 因此,对于这个做我又有频率:

FFT BIN #2: 
Example1: 
0: 0*8000/256 
1: 1*8000/256 
. 
. 
127: 127*8000/256 

FFT BIN #2 
Example2: 
128: 129*8000/256 
139: 130*8000/256 
. 
. 
255: 255*8000/256 

因为我想绘制该幅度/频率曲线图。但我不明白是否所有这些fft bin应该像examaple1那样在相同的频率上重叠,或者像第二个例子那样展开。

或者我想做的事情是完全多余的?因为我想要完成的是找到每30-50ms时间帧的峰值放大器值用于比较其他声音文件。

如果任何人都可以为我清除此问题,我将非常感激。

最好的问候,保罗 Ostregich

+0

原始信号/数据应用零填充以允许对指定基数进行转换。如果我理解你的问题,并且你正在使用一个可识别的库进行转换,你在做什么看起来没问题。 – MoonKnight 2012-07-19 10:33:22

+0

@Killercam我的问题有三种可能性。我可以使用Example1或Example2绘制图表,或者我不能绘制图表。也许我正在理解你的答案错误,但基本上你的说法对选择问题“是” – Sal 2012-07-19 11:02:52

+0

是的,我说你可以绘制整个值范围的图形,因为FFT将处理任何'零'您在垃圾箱中的值没有填充数据。但是,对于与您的数据集(256)一样小的数据集,您需要对边缘效应感到厌倦,并且可能需要_window_ /包装数据以避免FFT拾取虚假周期。 – MoonKnight 2012-07-19 11:18:31

回答

2

你的FFT结果仓代表相同的频率组在每个FFT,因为在你的例子#1,但对于不同的时间片。

每个FFT将允许您在大约12 mS窗口时间内绘制幅度与频率的关系曲线。

您还可以将FFT量值相加,得到Welch方法PSD(功率谱密度)以获得更长的时间帧。

+0

这就是我正在寻找的信息。谢谢 – Sal 2012-07-20 07:36:11

0

如果您想要查找每30-50ms时间帧的峰值放大器值,您只需绘制每个时间帧中信号的放大器谱图。另外,如果你对每帧进行256个采样的FFT,那么你应该得到129个,而不是128个频率分量。第一个是直流分量,最后一个是奈奎斯特频率分量。