代码之家  ›  专栏  ›  技术社区  ›  Sal

如何确定FFT结果指数Freq并绘制振幅/频率图

  •  2
  • Sal  · 技术社区  · 12 年前

    我有一个假设性的问题来理解这个概念。。

    假设我捕获了一个采样率为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仓是否应该像examaple1一样重叠在相同的频率上,或者像第二个例子一样展开。

    还是我想做一些完全多余的事情?因为我想完成的是找到每30-50ms时间帧的峰值安培值,用于比较其他声音文件。。

    如果有人能帮我解决这个问题,我将不胜感激。

    2 回复  |  直到 6 年前
        1
  •  2
  •   hotpaw2    12 年前

    您的FFT结果仓表示每个FFT中的同一组频率,如您的示例#1所示,但用于不同的时间片。

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

    您也可以将FFT幅度矢量和在一起,以获得更长时间帧的Welch方法PSD(功率谱密度)。

        2
  •  1
  •   chaohuang    12 年前

    如果你想找到每30-50ms时间帧的峰值安培值,你只需要绘制每个时间帧中信号的安培频谱。

    此外,如果你对每帧进行256个样本的FFT,那么你应该得到129个而不是128个频率分量。第一个是直流分量,最后一个是奈奎斯特频率分量。