gpt4 book ai didi

c# - 使用 Goertzel 算法获取频域

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:24:10 26 4
gpt4 key购买 nike

我使用了这段代码:

public double goertzel(List<double> sngData, long N, float frequency, int samplerate)
{
double skn, skn1, skn2;
skn = skn1 = skn2 = 0;
samplerate = this.sampleRate;
frequency = this.freq;

double c = 2 * pi * frequency / samplerate;
double cosan = Math.Cos(c);

for (int i = 0; i < N; i++)
{
skn2 = skn1;
skn1 = skn;
skn = 2 * cosan * skn1 - skn2 + sngData[i];
}

return skn - Math.Exp(-c) * skn1;
}

在处理音频数据时使用该函数后,接下来我应该怎么做才能用该算法获得频域?

最佳答案

Goertzel 算法旨在找到某个特定频率的强度(幅度)。频率是输入参数。

要获得音频信号的频谱(频率域中的强度),您必须对大量频率执行 Goertzel 算法,但明智的做法是进行一次傅立叶变换以获得类似的结果。
有人可能会说 Goertzel 算法找到了一个离散 FT 样本。

关于c# - 使用 Goertzel 算法获取频域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28366502/

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