Estou procurando livros ou recursos que cubram o seguinte em detalhes:
implementar funções matemáticas (por exemplo, logaritmo, exponencial, seno, cosseno, inverso) na aritmética de ponto fixo para fins de DSP.
técnicas como o uso de tabelas de pesquisa, séries de Taylor etc.
Estou bastante familiarizado com a programação C e estou mais interessado nos algoritmos sobre como implementar várias funções matemáticas de maneira eficiente.
Respostas:
a forma polinomial geral é:
a última forma está usando o método de Horner , que é altamente recomendado, especialmente se você estiver fazendo isso no ponto flutuante de precisão única.
depois, para algumas funções específicas:
raiz quadrada:
E se2≤x≤4 , use o acima para avaliar x2−−√ e multiplique esse resultado com 2–√ para obter x−−√ . como comlog2(x) , aplique força de 2 scaling para dimensionar o argumento para o intervalo necessário.
logaritmo de base 2:
exponencial de base 2:
seno:
cosseno (use seno):
tangente:
tangente inversa:
seno inverso:
cosseno inverso:
fonte
man sox
é a melhor;)sox
. o que o manual diz sobre isso?[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)))
pode ser onp.max(np.abs((sqrt_1px(xp)-np.sqrt(1+xp))/np.sqrt(1+xp)))
mesmo, pois2**x
o peso do erro é diferente e terei que descobrir como fiz isso. Eu tenho scripts antigos do MATLAB que costumavam funcionar no Octave, mas agora eu não consigo nem o Octave plotar no meu antigo laptop G4 Mac.Embora não seja específico ao ponto fixo, eu recomendo o livro "Math Toolkit for Real-Time Programming" de Jack Crenshaw. Ele vem com um CD com o código fonte.
fonte
A TI possui bibliotecas IQMath para todos os seus microcontroladores de ponto fixo. Eu os achei uma mina de ouro de funções de matemática e DSP de ponto fixo, não necessariamente limitadas a chips de TI.
MSP430 C28X
fonte
A aproximação de Chebyshev pode ajudar a calcular coeficientes polinomiais próximos do ideal para aproximar uma função em um intervalo finito. Você executa a rotina de aproximação em um PC para obter um conjunto específico de coeficientes polinomiais, que podem ser aplicados em qualquer plataforma que você desejar (por exemplo, incorporado / DSP). A impressão fina é mais ou menos a seguinte:
fonte