我用这个代码:
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.
更多推荐
获取与戈泽尔算法频域
发布评论