2015-02-06 1 views
0

과 주파수 영역을 얻으이 코드 사용 : 그 알고리즘 주파수 도메인을 얻기 위해 다음에 무엇을해야합니까, 오디오 데이터를 처리하는 동안 기능 사용 후Goertzel 알고리즘

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

를?

+0

귀하의 질문에 이해가되지 않습니다. Goertzel 알고리즘은 신호 데이터에서 주파수를 끌어냅니다. 그 결과는 주파수 영역에 있습니다. 단일 주파수를 감지하려고합니까? 아니면 Constant Q 변환과 같은 것을 원하십니까? – Brannon

+0

나는 Goertzel이 FFT와 같다고 생각한다. 그래서, 나는 그 알고리즘으로 오디오 샘플의 주파수를 얻어야합니다. 그 goertzel 알고리즘을 노래 식별자 (예 : shazam, 등)을 구현하고 싶습니다. 주파수를 얻기 위해 Goertzel 알고리즘을 사용하면 어떻게 될까요? –

답변

1

Goertzel 알고리즘은 특정 주파수의 강도 (크기)를 찾는 것입니다. 빈도는 입력 매개 변수입니다.

오디오 신호의 주파수 스펙트럼 (주파수 도메인 인 경우 강도)을 얻으려면 큰 주파수 시리즈에 대해 Goertzel 알고리즘을 실행해야하지만 유사한 결과를 얻으려면 하나의 푸리에 변환을하는 것이 좋습니다.
Goertzel 알고리즘이 이산 FT의 한 샘플을 찾는다 고 말할 수도 있습니다.

+0

큰 주파수 시리즈는 어떻게됩니까? 무엇처럼? –

+0

like goertzel (20 Hz), goertzel (21 Hz), 22 Hz, 23 Hz ... 44099 Hz, 44100 Hz – MBo

+0

그런 다음 goertzel 알고리즘에서 일부 값을 얻은 후에 노래 식별자를 만들려면 어떻게해야합니까? ? –