gpt4 book ai didi

c - 采样率和可变长度输入样本与固定大小的 FFT 输入有何关系?

转载 作者:行者123 更新时间:2023-11-30 15:33:39 25 4
gpt4 key购买 nike

我正在查看 FFTW 来获取音频数据样本的频谱。

据我了解,该过程的“计划”选择对应于 T 秒时间段的 N 个样本。 input[x]的值是波在时间x*N/T时的振幅以及 output[x] 的复振幅与频率有某种关系。

我知道我需要应用窗口函数,但我不知道如何操作。输入缓冲区是 Ni 的数组一般 sample Ni!=N ,并且以 F Hz 的速率,这对应于 Ti=Ni/F 的时间秒 Ti!=T一般来说。

那么我如何填充 N FFT 的输入给定Ni样本,并且给定NFoutput[x]对应的频率是多少?

最佳答案

SO 上已经有很多关于这个主题的很好的问题和答案,但有一些一般性的提示:

  • sample 的光谱通常随时间变化
  • 您通常选择频谱短期变化很小的窗口大小(== FFT 大小),例如10 ms(频率分辨率要求可能会影响此选择),因此如果您的采样率是例如44.1 kHz,那么您可以选择 FFT 大小,例如 4096。
  • 通常使用连续的窗口(即样本 block - 这些通常重叠,例如 50%)来处理总样本,因此您实际上获得了一系列随时间变化的光谱
  • this excellent SO answer 涵盖了从频谱获取频率信息
  • 您需要申请 window function在计算 FFT 之前,对每个连续的样本 block 进行计算
  • FFT 的输入将是实数值(来自样本 block ) - 如果您使用普通的复数到复数 FFT,则将输入的虚部设置为 0
  • FFT 的输出将是包含幅度和相位信息的复数值 - 对于实数输入,输出是(共轭)对称的,因此只有前 N/2 个输出箱实际上有用
  • 要从输出箱获取 dB 幅度值,请使用 mag_dB = 10 * log10(re*re + im*im)
  • 您可以将输出光谱序列绘制为 spectrogram ,使用颜色表示 dB 幅度,以频率和样本 block 索引(==时间)作为两个轴

另请参阅:

关于c - 采样率和可变长度输入样本与固定大小的 FFT 输入有何关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23607710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com