FFT-Problem (Gibt zufällige Ergebnisse zurück)

Ich habe diesen Code, aber er gibt weiterhin Zufallsfrequenzen von 0 bis ungefähr 1050 zurück. Bitte helfen Sie mir zu verstehen, warum dies geschieht.

Meine Datenlänge beträgt 1024, die Abtastrate 8192 und die Daten sind ein kurzes Array, das mit Eingangsdaten vom Mikrofon gefüllt ist.


float *iSignal = new float[2048];
float *oSignal = new float[2048];
int pitch = 0;

for(x=0;x<=1024;x++) {
    iSignal[x] = data[x];
}

fft(iSignal,oSignal,1024); //Input data, output data, length of input and output data

for(int y=0;y< 2048;y+=2) {
if((pow(oSignal[y],2)+pow(oSignal[y+1],2))>(pow(oSignal[pitch],2)+pow(oSignal[(pitch)+1],2))) {
        pitch = y;
    }
}

double pitchF = pitch / (8192.0/1024);
printf("Pitch: %f\n",pitchF);

Vielen Dank,

Niall.

Bearbeiten: Der Code wurde geändert, es werden jedoch weiterhin zufällige Frequenzen zurückgegeben.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage