如何使用定点算法在正弦查找表(LUT)中查找偏移量

时间:2015-02-09 09:32:00

标签: algorithm embedded lookup-tables fixed-point

我正在生成一个LUT,将0-2PI划分为512个片段,然后找到这些值的正弦值并将它们存储为Q1.31值。

示例:

LUT[0] = 0

LUT[1] = sin((1/512) * 2*PI) * (2^31)
..
..

LUT[511] = sin((511/512) * 2*PI) * (2^31)

我的输入也是Q1.31格式的值。

我的问题是如何使用LUT,即当我将随机值作为输入来计算正弦值时,在表中找到偏移值的算法是什么

示例:

int sample_input = 0.125 * (2^31) //0.125radians in Q31 format = 268435456

1 个答案:

答案 0 :(得分:0)

请注意,0.125radians * (2^31)方法不适用于角度> 1弧度。可能,你想要标准化角度 (0.125radians/2Pi) * (2^31)
无论如何,你需要将2 ^ 31范围映射到2 ^ 9 - 所以只需要除以2 ^ 22。 示例:

Angle = 0.125 radians.
0.125 /(2*Pi) * 2^31 = 42 722 829
42 722 829 / 2^22 = 10
Result = Lut[10] = 262 874 923