Forum: FPGA, VHDL & Co. Umrechnung in db nach FFT


von max (Gast)


Lesenswert?

Hallo Zusammen,

ich habe das Ergebnis einer FFT vorliegen (komplex, fixed-point) und 
will das so errechnete Frequenzspektrum logarithmisch darstellen.

Dazu muss ich ja zuerst die beiden komplexen Anteile quadrieren, 
addieren, die wurzel ziehen und den log10 berechnen.

Geht das irgendwie elleganter, schneller, schöner? Gibts irgend eine 
Näherung dafür oder sonstige Tricks?

Vielen Dank schon mal für eventuelle Antworten.
Einen schönen Abend

  Max

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

max schrieb:
> Dazu muss ich ja zuerst die beiden komplexen Anteile quadrieren,
> addieren, die wurzel ziehen und den log10 berechnen.
>
> Geht das irgendwie elleganter, schneller, schöner? Gibts irgend eine
> Näherung dafür

Für den Absolutwert kann man |Re| + |Im| als Näherung nehmen, für log am 
einfachsten eine Tabelle. Kommt alles darauf an wie schnell und genau du 
das Ergebnis brauchst.

von Helmut S. (helmuts)


Lesenswert?

Andreas Schwarz schrieb:
> max schrieb:
>> Dazu muss ich ja zuerst die beiden komplexen Anteile quadrieren,
>> addieren, die wurzel ziehen und den log10 berechnen.
>>
>> Geht das irgendwie elleganter, schneller, schöner? Gibts irgend eine
>> Näherung dafür
>
> Für den Absolutwert kann man |Re| + |Im| als Näherung nehmen, für log am
> einfachsten eine Tabelle. Kommt alles darauf an wie schnell und genau du
> das Ergebnis brauchst.

Also das Quadrieren und Addieren ist das kleinste Problem. Die Wurzel 
und der Logarithmus sind die Zeitfresser.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Das ist eine Näherung für die Berechnung der Vektorlänge, also keine 
Wurzel mehr ziehen.

von Helmut S. (helmuts)


Lesenswert?

Andreas Schwarz schrieb:
> Das ist eine Näherung für die Berechnung der Vektorlänge, also keine
> Wurzel mehr ziehen.

Hallo Andreas,

danke für die Aufklärung. Ich hatte das falsch verstanden.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Der Betrag der größeren Zahl (Re oder Im) plus 0,4(142) * der Betrag der 
kleineren Zahl, das stimmt exakt auf 8 Punkten des Kreises, also alle 45 
Grad.

von max (Gast)


Lesenswert?

Vielen Dank für die sehr hilfreichen Antworten!

Ich werde Christoph Kesslers Vorschlag mit der von Andreas Schwarz 
vorgeschlagenen Tabelle kombinieren.

Ich frag mich noch immer, warum ich auf die Tabelle nicht gleich von 
alleine gekommen bin, vor allem weil die Genauigkeit die hinten 
rauskommen soll eh nur 8 Bit sind. ;) (Das Ergebnis kommt in nen 
Dual-Port-Ram und wird dann vom VGA-Controller ausgelesen. Mehr als 256 
Pixel in der Höhe hab ich dafür eh nicht Platz!)

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
Noch kein Account? Hier anmelden.