www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik microchip FFT example code


Autor: Rüdiger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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!!!

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmmmm

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
in dem Zusammenhang erscheinen mir die Zahlen im Beispiel etwas zu 
gross: 7fff ist doch +0.999 und 8001 ist wohl -1 ? Oder täusch ich mich 
da ?

Gerhard

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne ich glaub nicht, aber in der Readme steht (wenn ich es nicht falsch 
verstanden habe) dass das Input Signal noch einmal bearbeitet wird um in 
dem "richtigen" Wertebereich zu liegen!!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.