2016-06-20 5 views
-1

ich einige Berechnungen in vb.net tue, das ist meine Gleichung:Berechnung Logarithmen in vb.net - widersprüchliche Ergebnisse

rms = (20 * (Math.Log(rms/0.7746))) 'also tried (Math.Log10(rms/0.7746)) 

ich verschiedene Methoden des Schreibens dieser versucht haben, einschließlich der Berechnungen Abtrennung in verschiedene Schritte. Das Endergebnis ist jedoch ziemlich weit entfernt.

Ich habe versucht, meine Variable 'RMS' als eine Dezimalzahl und ein Doppel zu deklarieren. Es enthält Dezimalstellen.

in Excel Ich habe die gleiche Berechnung mit dieser Formel versucht:

=20*(LOG(C2/0.7746)) ' where C2 is the RMS value 

Und die Ergebnisse sind konsistent mit einer Website, die ich verwenden, sowie meinen Taschenrechner zu überprüfen.

ich auch die Zahl auf 3 Dezimalstellen gerundet haben versucht:

rms = Math.Round(rms, 3) 

Auch dies hat einen minimalen Einfluss auf das Endergebnis.

Ich kann nur annehmen, es ist die "Vorrangstellung des Bedieners" in VB, aber ich habe Mühe, dieses eine zu arbeiten.

Jede Hilfe sehr dankbar wie immer, danke.

+1

nur überprüfen - 20 * (Math.Log10 (100.0)) sollte 40 – MBo

+0

In Ihrer Excel-Formel ist die LOG-Funktion standardmäßig auf Basis 10. Wenn Sie das gewünschte Ergebnis erhalten, müssen Sie 'Math.Log10 verwenden 'in Ihrer VB.Net-Anweisung. Sie haben gesagt, dass Sie das versucht haben, aber wenn ich 'Math.Log10' verwende, bekomme ich das gleiche Ergebnis wie die Excel-Formel. – Blackwood

+0

Ja, ich bekomme 40 wie erwartet mit beiden der folgenden: In Excel: = 20 * (LOG (L6)) - in VB: MsgBox (20 * (Math.Log10 (100.0))) – Tony

Antwort

1

Nach einer Marathon-Debugging-Sitzung habe ich einen Fehler in meinem Code gefunden.

Ich habe eine Routine, die die Spannung bei einer bestimmten Frequenz verwendet, um alle Plots, die ich mache, auf 0dBu zu "normalisieren".

Meine Normalisierungsroutine war gebrochen. Schlecht.

Und schließlich - um die richtige Ausgabe von der Log-Mathe zu bekommen, musste ich die Reihenfolge ändern, in der die Berechnung durchgeführt wurde.

Es ursprünglich rms = (Math.Log10(rms/0.7746) * 20) war

Bei dem Versuch, das Problem zu finden, habe ich es zu rms = (20 * (Math.Log(rms/0.7746)))

, das ein anderen (und falschen) Ergebnis liefert.

In jedem Fall - es ist jetzt behoben.

Danke an alle, die geantwortet haben.

Verwandte Themen