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...:-)))
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
Eine eigene Frage?
Dieser Thread ist über 18 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.