Einzelnen Beitrag anzeigen

Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
763 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Circular spectrum visualizer

  Alt 23. Mär 2019, 14:56
Log(x) in Visual Basic entspricht ln(x) in Delphi.

Visual Basic Log

Wie oben erwähnt gibt es in VB eine überladene Funktion log(x,Basis), welche uns aber hier nicht weiter interessiert.


Der Autor logarithmiert das Spektrum mit ln().

Problem: Wenn das Spektrum gegen 0 geht, dann geht ln(Spektrum) gegen minus Unendlich.

Der Autor wendet hier einen kleinen "Trick" an, damit dies nicht geschieht.

Er hebt das gemessene Spektrum um 0.0001 an. (Das ist Basteln - keine Mathe)

Er rechnet also nicht ln(Spektrum) sondern ln(Spektrum+0.0001).

Weiter will der Autor eine Funktion, welche für Spektrum=0 den Wert 0 annimmt.

Da ln(0+0.0001) = -9.21034037197618 ist, addiert er nun 9.21034037197618 dazu.

Insgesamt

f(x) = ln( sqrt( Sp_Real^2 + Sp_Imag^2 ) + 0.0001 ) + 9.21034037197618.



Zu: sqrt. Sowohl in Delphi wie in Visual Basic liefert sqrt die Quadratwurzel einer Zahl zurück.

https://docs.microsoft.com/en-us/dot...ramework-4.7.2

Bist du sicher, dass im Original-VB-Code sqr steht? Das macht für mich irgendwie wenig Sinn.

Das Spektrum s besteht ja aus einem Realteil sr und einem Imaginärteil si.
Insgesamt s = sqrt( sr*sr + si*si ).

Wo ist der Link auf den Originalcode in VB?
Michael Gasser
  Mit Zitat antworten Zitat