获取与戈泽尔算法频域 [英] Get the frequency domain with Goertzel Algorithm

查看:285
本文介绍了获取与戈泽尔算法频域的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用这个代码:

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;
}

使用该功能在处理音频数据后,我应该怎么办旁边得到与算法的频域?

After use that function while processing audio data, what should i do next to get the frequency domain with that algorithm?

推荐答案

Goertzel算法是为了找到一些特定频率的强度(幅度)。频率为输入参数。

Goertzel algorithm is intended to find an intensity (magnitude) of some specific frequency. Frequency is input parameter.

要获得音频信号的频谱(强度若频率域),则必须执行戈泽尔算法中的一个大型系列的频率,但它是明智的1傅立叶变换得到类似的结果。结果
也许有人会说,戈泽尔算法找到离散FT的一个样本。

To get frequency spectrum of audio signal (intensity if freq. domain), you have to execute Goertzel algo for a large series of frequencies, but it would be wise to make one Fourier transform to get similar results.
One might say that Goertzel algorithm finds one sample of discrete FT.

这篇关于获取与戈泽尔算法频域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆