【问题标题】:Fast Fourier Transform for non log 2非对数 2 的快速傅里叶变换
【发布时间】:2013-10-17 01:31:52
【问题描述】:

我想在 Java 中实现快速傅立叶变换来识别和弦,但我真的不明白。它说样本数应该是2的幂,那么对于一首没有样本数等于2的幂的歌曲我们应该怎么办?我也想了解 STFT。

【问题讨论】:

    标签: java signal-processing fft


    【解决方案1】:

    您通常会在整个文件的滑动窗口上生成STFT。选择窗口的大小以给出一个合理的时间段,在该时间段内声音的特性不会发生很大变化。通常一个窗口可能在 10 毫秒左右,因此如果您的采样率为 44.1kHz,那么您可以使用 N = 512 的窗口大小,以便获得所需的持续时间和大小为 2 的幂。然后,您通过文件获取大小为 N 个样本的连续块,并为每个 N 点块生成 FFT。 (注意:在大多数情况下,您实际上需要 FFT 输出的 幅度,以便获得功率谱的估计值。)为了提高分辨率,块可以重叠,例如50%,但这当然会增加处理负载。最终结果是一系列短期频谱,因此实际上您有一个 3D 矩阵(幅度 v 频率 v 时间),它描述了频域中声音的内容。

    【讨论】:

      【解决方案2】:

      通常你所做的只是用零填充数据以使其成为 2 的幂。

      【讨论】:

        猜你喜欢
        • 2011-07-12
        • 2017-09-14
        • 2012-08-21
        • 1970-01-01
        • 1970-01-01
        • 2012-12-10
        • 2013-03-31
        • 2015-08-19
        • 2020-03-29
        相关资源
        最近更新 更多