Je recherche des livres ou des ressources qui couvrent en détail les éléments suivants:
mettre en œuvre des fonctions mathématiques (par exemple, logarithme, exponentielle, sinus, cosinus, inverse) en arithmétique à virgule fixe à des fins DSP.
des techniques telles que l'utilisation de tables de recherche, de séries Taylor, etc.
Je suis assez familier avec la programmation C et je suis plus intéressé par les algorithmes sur la façon de mettre en œuvre efficacement diverses fonctions mathématiques.
Réponses:
la forme polynomiale générale est:
cette dernière forme utilise la méthode de Horner , ce qui est fortement recommandé, surtout si vous le faites en virgule flottante simple précision.
puis pour quelques fonctions spécifiques:
racine carrée:
si2 ≤ x ≤ 4 , utilisez ce qui précède pour évaluer X2--√ et multiplier ce résultat avec 2-√ obtenir x−−√ . comme aveclog2(x) , appliquez la puissance de 2 mise à l'échelle pour mettre l'argument à l'échelle dans la plage nécessaire.
logarithme en base 2:
exponentielle base 2:
sinus:
cosinus (utiliser sinus):
tangente:
tangente inverse:
sinus inverse:
cosinus inverse:
la source
man sox
est toujours la meilleure;)sox
. qu'en dit le manuel?[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)))
pourrait aussi être à la placenp.max(np.abs((sqrt_1px(xp)-np.sqrt(1+xp))/np.sqrt(1+xp)))
et même pour2**x
la pondération d'erreur pour le péché est différent et je vais devoir trouver comment je l'ai fait. j'ai d'anciens scripts MATLAB qui fonctionnaient auparavant dans Octave, mais maintenant je ne peux même plus faire tracer Octave sur mon ancien ordinateur portable Mac G4.Bien qu'il ne soit pas spécifique au point fixe, je recommande fortement le livre "Math Toolkit for Real-Time Programming" de Jack Crenshaw. Il est livré avec un CD avec le code source.
la source
TI possède des bibliothèques IQMath pour tous ses microcontrôleurs à virgule fixe. Je les ai trouvés être une mine d'or de fonctions mathématiques et DSP à virgule fixe qui ne se limitent pas nécessairement aux puces TI.
MSP430 C28X
la source
L'approximation de Chebyshev peut aider à calculer des coefficients polynomiaux qui sont proches de l'optimum pour approximer une fonction sur une plage finie. Vous exécutez la routine d'approximation sur un PC pour obtenir un ensemble particulier de coefficients polynomiaux, que vous pouvez ensuite appliquer sur la plate-forme que vous souhaitez (par exemple intégrée / DSP). Les petits caractères sont plus ou moins les suivants:
la source