Ich suche nach Büchern oder Ressourcen, die Folgendes im Detail behandeln:
Implementieren mathematischer Funktionen (z. B. Logarithmus, Exponential, Sinus, Cosinus, Inverse) in Festkomma-Arithmetik für DSP-Zwecke.
Techniken wie die Verwendung von Nachschlagetabellen, Taylor-Serien usw.
Ich bin ziemlich vertraut mit der C-Programmierung und interessiere mich mehr für die Algorithmen, wie verschiedene mathematische Funktionen effizient implementiert werden können.
Antworten:
Die allgemeine Polynomform lautet:
Die letztere Form verwendet die Horner-Methode , die sehr zu empfehlen ist, insbesondere wenn Sie dies in Gleitkommazahlen mit einfacher Genauigkeit tun.
dann für ein paar spezifische Funktionen:
Quadratwurzel:
Wenn , verwenden Sie die obigen , um auszuwerten und das Ergebnis mit zu multiplizieren, um . wie bei die Skalierungskraft an, um das Argument auf den erforderlichen Bereich zu skalieren.√2≤x≤4 √x2−−√ √2–√ log2(x)2x−−√ log2(x) 2
Logarithmus zur Basis 2:
Basis 2 exponentiell:
Sinus:
Cosinus (Sinus verwenden):
Tangente:
inverse Tangente:
inverser Sinus:
inverser Kosinus:
quelle
man sox
am besten;)sox
. Was sagt das Handbuch dazu?[1] R. Bristow-Johnson, Cookbook formulae for audio EQ biquad filter coefficients, http://musicdsp.org/files/Audio-EQ-Cookbook.txt
:)np.max(np.abs(sqrt_1px(xp)-np.sqrt(1+xp)))
könnte stattdessen seinnp.max(np.abs((sqrt_1px(xp)-np.sqrt(1+xp))/np.sqrt(1+xp)))
und gleiche gilt für2**x
die Fehlergewichtung für die Sünde ist anders und ich muss feststellen , wie ich das tat. Ich habe alte MATLAB-Skripte, die früher in Octave funktionierten, aber jetzt kann ich Octave nicht einmal dazu bringen, auf meinem alten G4 Mac-Laptop zu zeichnen.Obwohl nicht spezifisch für den Fixpunkt, würde ich das Buch "Math Toolkit for Real-Time Programming" von Jack Crenshaw wärmstens empfehlen. Es wird mit einer CD mit dem Quellcode geliefert.
quelle
TI verfügt über IQMath-Bibliotheken für alle Festkomma-Mikrocontroller. Ich habe festgestellt, dass sie eine Goldmine von Festkomma-Mathematik- und DSP-Funktionen sind, die nicht unbedingt auf TI-Chips beschränkt sind.
MSP430 C28X
quelle
Die Chebyshev-Näherung kann dabei helfen, Polynomkoeffizienten zu berechnen, die nahezu optimal sind, um eine Funktion über einen endlichen Bereich zu approximieren. Sie führen die Approximationsroutine auf einem PC aus, um einen bestimmten Satz von Polynomkoeffizienten zu erzielen, die Sie dann auf eine beliebige Plattform anwenden können (z. B. Embedded / DSP). Das Kleingedruckte ist mehr oder weniger wie folgt:
quelle