Estoy buscando libros o recursos que cubran lo siguiente en detalle:
implementar funciones matemáticas (p. ej., logaritmo, exponencial, seno, coseno, inverso) en aritmética de punto fijo para fines de DSP.
técnicas como el uso de tablas de búsqueda, series de Taylor, etc.
Estoy bastante familiarizado con la programación en C y estoy más interesado en los algoritmos sobre cómo implementar diversas funciones matemáticas de manera eficiente.
Respuestas:
La forma polinómica general es:
la última forma está utilizando el método de Horner , que es muy recomendable, especialmente si lo está haciendo en coma flotante de precisión simple.
luego para algunas funciones específicas:
raíz cuadrada:
Si2 ≤ x ≤ 4 , use lo anterior para evaluar X2--√ y multiplica ese resultado con 2-√ Llegar X--√ . Al igual que conIniciar sesión2( x ) , aplicar el poder de 2 escalar para escalar el argumento al rango necesario.
logaritmo de base 2:
base 2 exponencial:
seno:
coseno (use seno):
tangente:
tangente inversa:
seno inverso:
coseno inverso:
fuente
man sox
es la mejor;)sox
. ¿Qué dice el manual al respecto?[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)))
podría ser elnp.max(np.abs((sqrt_1px(xp)-np.sqrt(1+xp))/np.sqrt(1+xp)))
mismo, ya que2**x
la ponderación del error por el pecado es diferente y tendré que encontrar cómo lo hice. Tengo viejos scripts de MATLAB que solían funcionar en Octave, pero ahora ni siquiera puedo hacer que Octave trace en mi vieja computadora portátil G4 Mac.Aunque no es específico para un punto fijo, recomendaría encarecidamente el libro "Math Toolkit for Real-Time Programming" de Jack Crenshaw. Viene con un CD con el código fuente.
fuente
TI tiene bibliotecas IQMath para todos sus microcontroladores de punto fijo. He descubierto que son una mina de oro de las funciones matemáticas y DSP de punto fijo, no necesariamente limitadas a chips TI.
MSP430 C28X
fuente
La aproximación de Chebyshev puede ayudar a calcular coeficientes polinomiales que están cerca del óptimo para aproximar una función en un rango finito. Ejecuta la rutina de aproximación en una PC para lograr un conjunto particular de coeficientes polinómicos, que luego puede aplicar en cualquier plataforma que desee (por ejemplo, incrustada / DSP) La letra pequeña es más o menos de la siguiente manera:
fuente