frohen ersten advent erstmal an alle ^^ ich hoffe mal, hier gibts nen paar experten, die sich ein wenig mit fourieranalysen auskennen - ich steh nämlich im moment nen bisschen aufm schlauch... =( ich bin dabei mir so einen 'spektrumanalyser' für meinen (jaha, selbstgebauten!!! ;) ) mp3-player zu basteln... doch wollt ich den code für die fft (oder dft??) nich einfach kopieren, sondern selber schreiben - vielleicht bleibt ja so was hängen ;) doch nun mal zu meinem problem: man braucht doch für die berechnung der amplitude der einzelnen harmonischen die genaue periodendauer der grundfrequenz des signals. aber wie komm ich an die?? muss ich die selber messen oder tu ich für die berechnung einfach so, als wär sie z.b. 50hz?????? und wenn ich die dann habe, wie kommt man dann an die amplitude einer harmonischen? ich hab mir da mal ne formel aus meinem physikbuch zusammengestückelt: amplitude der x-ten harmonischen = [sin(2*pi*f*x*t1) * F(t1) + sin(2*pi*f*x*t2) * F(t2) + .... + sin(2*pi*f*x*tn) * F(tn)] / n (ja sorry, hab kein formelprogramm) x is dabei die so-und-so-vielte harmonische, n die gespeicherte anzahl der "momentanamplituden" des signals, F(t) ist die gespeicherte "momentanamplitude" des signals zum zeitpunkt t und f ist die grundfrequenz... so, ich brauch jetzt erstmal nen kaffee ^^ lg - zero_gravity
Naja, eine echte Transformation wirst du auf Grund der begrenzten Resourcen vermutlich eh nicht hinbekommen. Ich habe mal eine möchte-gern-spektrum-analyser implementiert, der einfach nur die Anzahl der Richtungsänderrungen pro Sekunde des Ausgangssignales grafisch Dargestellt hat. Das ist natürlich in keinster Weise mit einer Fourieranalyse zu vergleichen, brachte aber einigermaßen logische Resultate, sah schick aus und war somit für meine Zwecke völlig ausreichend. Leider finde ich dazu keine Quellen mehr, aber vom Prinzip her wars recht simpel.
@ niels: sieht bestimmt auch ziemlich cool aus, aber ich hätte schon gern ne komplette auflösung des spektrums ^^ trotzdem danke =) @ uhu: was meinst du genau mit frequenzbereich?? die grundfrequenz???? fenstergröße ist - nehm ich mal an - die menge der gemessenen stützpunkte des signals... wie viel passen da so ins ram? ich dachte da so an etwa 256 und die abtastzeit hängt doch auch irgendwie mit der samplingfrequenz zusammen, oder??? bahnhof is denn meine formel ansatzweise richtig?? ich hätte echt bei analysis in mathe besser aufpassen sollen ;) schönen abend noch udn danke soweit - zero_gravity
oh hey düsentrieb, hab dich eben ganz überlesen ;) wollt das ganze auf nem mega avr laufen lassen... irgendwas richtung mega8 oder mega32 ^^ und dann das ganze bei maximalen 16mhz wenn du mit punkten die einzelen messungen des adc vom signal pro messdurchgang meinst, dann sollten das so um die 256 sein - bei mehr wirds ram langsam knapp
zero_gravity wrote: > @ uhu: > was meinst du genau mit frequenzbereich?? die grundfrequenz???? Die niedrigste Frequenz, die die FFT auflösen kann ergibt sich aus Samplingfrequenz (= 1/Abtastzeit) und der Anzahl Sampels, über die analysiert wird (= Fenstergröße). Die höchste auflösbare Frequenz ergibt sich nach dem Abtasttheorem aus der halben Samplingfrequenz. > fenstergröße ist - nehm ich mal an - die menge der gemessenen > stützpunkte des signals... wie viel passen da so ins ram? ich dachte da > so an etwa 256 Ja. Allerdings wählt man die Fenstergröße nicht nach der vorhandenen Speichermenge aus, sondern die Auflösungsansprüche ergeben eine notwendige Fensterbreite und die bestimmt die Menge Speicher, die benötigt wird.
hmmm... auflösungsansprüche, was? keine ahnung, was nimmt man da für ne auflösung?? bei ner linearen skala vielleicht immer so den mittelwert von frequenzbändern á 400hz?? lg - zero_gravity
Beispiel: Man will das Spektrum des Signals in 25 Frequenzbänder auflösen. Dann braucht man eine Fensterbreite von 50 Sampels. Angenommen, man wählt eine Abtastzeit von 500 µs, dann ergibt sich eine maximal auflösbare Frequenz von 1000 Hz.
ok, das mit den frequenzbändern hab ich jetzt glaub ich verstanden ^^ also braucht man nur 50 messwerte um 25 bänder zu "analysieren"... das würd ja schon reichen =) und wenn man diese 50 messwerte in einer zeit von 500µs gespeichert kriegt, liegt die höchste noch erfassbare harmonische, also der höchste ton des signals, bei 1khz????? vielleicht such ich mal bei amazon nach nem buch "fft für dummies" ;) danke soweit und gute nacht - zero_gravity
zb du sampelst mit 10khz, 256 pkte, dann wird fmax 5khz und fmin 39hz du brauchst wohl: fft in place, real data ne anspruchsvolle aufgabe...muddu wohl noch etwas lernen... :-)
hey düsentrieb, hab mir schon gedacht, dass das nich so ganz einfach wird ;) aber ich glaube ich hab jetzt zumindest schonmal die sache mit der samplingfrequenz und den einzelnen bins verstanden ^^ aber wenn ich jetzt meine signal-stützpunkte vom adc im ram liegen hab, wie läuft dann die fft ab? ich muss doch irgendwie die gespeicherten werte mit diesem schmetterlingsgraphen (http://www.fh-augsburg.de/~horschem/IngMatherial2/fastfourier.html) berechnen, um die phase und die amplitude der einzelnen oberwellen zu bestimmen, oder????? lg zero_gravity
right ! butterfly is your friend... :-) fft in place + real : in place: in+out benutzt selben ram...für mini-ram-cpu ideal real: es werden nur reale inputs benutzt...komplexe haste ja bei realen daten eh nicht; dadurch kann 50% platz gespart werden...zb 2*128 input für 256 adc-werte; 256 byte ram reichen somit; die bit-verwurschtelung is allerdings etwas komplexer...man bekommt eben nie was geschenkt... bei avr-freaks gibts ein projekt, da hat einer wohl genau sowas mit avr gemacht...:-)))
Hallo zero_gravity, Zur Theoretischen Erklärung kann ich dier folgendes Vorlesungsskript sehr ans Herz legen: http://www.tfh-berlin.de/~rudolph/signale/skripte/index.html Besonders Teil 5 und die Blätter zur DFT. Schönen Tag noch
hey forum-leutz :) ich hab mich jetzt mal duch dutzende seiten und dokumente gearbeitet (danke an jens & düsentrieb) und ich denke, dass auch so halbwegs was hängen geblieben ist ;) allerding verwirrt mich da eine sache total: seht euch bitte mal die zweite sinusoid-rechnung im jeweils 2ten level der beiden butterfly-graphen an... http://www.ece.ucsb.edu/~kastner/ece15b/project1/fft_description_files/image032.jpg und http://www.larguesa.kit.net/MPS/projet50.gif bei dem ersten ist der sinusoid da W^2 und bei dem zweiten graphen ist er W^1!?! wie müsste der denn nun aussehen? eigentlich doch W^1... oder hab ich wiedermal was nicht mitgekriegt?! schöne nacht noch ^^ zero_gravity
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.