【问题标题】:Find the frequency in Hz using FMOD [duplicate]使用 FMOD 查找以 Hz 为单位的频率 [重复]
【发布时间】:2019-01-19 13:34:13
【问题描述】:

我正在尝试为 fft 频谱中的每个 bin 找到以赫兹为单位的频率。下面是我的代码,只是在浮点列表中添加了 fft 频谱值。

for (int len = 0; len < nyquistLength; ++len)
    {
        for (int channel = 0; channel < numChannels; ++channel)
        {
            channs += dspFFT.spectrum[channel][len];
            if (channel == numChannels - 1)
            {
                spectrum.Add(Math.Abs(Mathf.Log10(channs)));
                Debug.Log(spectrum[len]);
                channs = 0;
            }
        }
    }

如何使用此信息来获取频谱中每个条目的 Hz? 谢谢。

【问题讨论】:

  • 您需要知道以 Hz 为单位的采样率以及 FFT 长度,才能知道每个 FFT 滤波器 bin 的中心频率(以 Hz 为单位)。
  • @hotpaw2 所以我的采样率是 44100,我的窗口长度是 2048。我之前曾尝试通过执行以下操作来找到 bin Hz:(channs/_windowLength) * (44100/ 2) 但我得到的结果几乎不高于零。

标签: c# audio signal-processing fft fmod


【解决方案1】:

采样率为 44100 的信号的 N 点 FFT 会生成中心频率间隔为 44100/N 从 0 Hz 到 44100 Hz 的频率区间。从0到22050Hz的奈奎斯特频率,有N/2+1个点。因此,如果您想要中心频率,请计算 i*44100/N,其中 i=0,1,...,N/2。

【讨论】:

  • 因此计算出的频率将对应于频谱给出的 bin。我应该为每个窗口(hann)做这个计算吗?等等。我的窗口是 hann 类型的,长度是 2048
  • 与窗口类型无关(例如汉宁、汉明)
猜你喜欢
  • 1970-01-01
  • 2018-10-02
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多