Доброго времени суток.
Подскажите, есть ли у кого реализация алгоритма Герцеля для комплексного сигнала?
У меня есть пример реализации который работает но только для не комплексного сигнала.
float goertzel(int numSamples,int TARGET_FREQUENCY,int SAMPLING_RATE, float* modData)
{
int k,i;
float floatnumSamples;
float omega,sine,cosine,coeff,q0,q1,q2,result;
floatnumSamples = (float) numSamples;
k = (int) (0.5 + ((floatnumSamples * TARGET_FREQUENCY) / SAMPLING_RATE));
omega = (2.0 * 3.1416 * k) / floatnumSamples;
sine = sin(omega);
cosine = cos(omega);
coeff = 2.0 * cosine;
q0=0;
q1=0;
q2=0;
result=0;
for(i=0; i<numSamples; i++)
{
q0 = coeff * q1 - q2 + modData[i];
q2 = q1;
q1 = q0;
}
result = sqrtf(q1 * q1 + q2 * q2 - q1 * q2 * coeff);
return result;
}