我正在生成一个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
答案 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