microchip FFT example code

Gast #1088512
Lesenswert?

Ich schaue mir grad das Beispiel Programm von Microchip an und hätte 
dazu die ein oder andere Frage!!!
Ich habe vor ein Signal von 0-20000Hz zu analysieren, und auf einem LCD 
Display anzuzeigen. In dem Beispiel wird ein Eigangssignal von 1kHz 
verwendet, müsste ich in dieser Stelle mein eigenes Eingangsignal 
speichern???
Muss ich an den Twiggle Faktoren noch irgendetwas ändern, außer halt die 
Länge festzulegen???
Wo wird das Ergebnis der FFT gespeichert????
Oder bin ich komplett falsch davor und es wird mir der größte 
Frequenzanteil angezeigt:
/* Compute the frequency (in Hz) of the largest spectral component */
Ist das Beispiel überhaupt für mein Vorhaben geeignet, wie gesagt ich 
habe vor ein 0-20000Hz breites Frequenzspektrum zu untersuchen und die 
zugehörigen Amplitunden zu den jewahligen Frequenzanteilen 
herauszufinden.

Ich hoffe mir kann jemand von euch weiterhelfen, auch wenn meine Fragen 
evlt. ein bisschen bescheuert sein mögen!!!
Angehängte Dateien:
Gast #1088611
Lesenswert?

Hi

"In dem Beispiel wird ein Eigangssignal von 1kHz
verwendet, müsste ich in dieser Stelle mein eigenes Eingangsignal
speichern???": ja

"Muss ich an den Twiggle Faktoren noch irgendetwas ändern, außer halt 
die
Länge festzulegen???" ? Welche Länge hast du denn vor ?

"Wo wird das Ergebnis der FFT gespeichert????": heisst FFTComplexIP 
nicht FFTComplex in place ? Also werden die Signaldaten von der FFT 
überschrieben.

ich bin jetzt nicht mehr so in der materie drin. das Beispiel sieht aber 
für mich schon aus, wie ne FFT. Also, sollte dein Vorhaben gelingen. 
Wenn ich mich recht erinnere gabs noch eine Vorgabe für die Daten. Steht 
da nicht noch irgendwo, dass die Werte kleiner +-0.5 sein müssen ?

Gerhard
Gast #1088660
Lesenswert?

Äh ja, da steht auf jeden Fall dass die Daten innerhalb der fractional 
fixed-point range von [-0.5, +0.5] sein müssen.
Was bedeutet das genau ich hab bis jetzt immer nur mit Ganzzahlen 
gearbeitet zumindest wenn es um Mikrocontroller anwendungen ging, wenn 
ich jetzt keine Ahnung einen Wert einlese der 5V beträgt müsste ich 
diesen dann mit 0.1 multiplizeren oder wie muss ich das verstehen???
Das Signal sollte in 128 verschiede Frequenzspektren aufgeteilt werden.
Gast #1088928
Lesenswert?

Hi

ja, fractional ist eine besondere Form der Fix-point Arithmetik. Dazu 
gibt hier einige Artikel. Als ich mich zum ersten mal mit dsPIC und FFT 
beschäftigt habe, bin ich da auch zum ersten Mal mit dem Begriff 
konfrontiert worden. 15 Bit-fractional wird auch mit 1.15-fractional 
bezeichnet. Der Wertebereich geht von +1 bis -1 (oder +0.999 bis -1 
schau mal bei wiki, da steht das genauer erklärt). Auf jeden fall 
bekommst du 16Bit-fractional, wenn du eine float-Zahl (die kleienr 1 
sein muss) mit 32768 (2hoch15) multiplizierst (aber schau mal bei wiki)
Auf jeden fall muss der gesamte Wertebereich deines Signals kleiner als 
+-0.5 sein, damit bei der FFT kein Müll rauskommt.
Für 128 verschiedene FFT-Werte brauchst du 256 "Messwerte", aber das 
weisst du vermutlich.

Gerhard

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren