用C语言写个sin和cos程序,C语言sin和cos函数的实现

我们在使用单片机编程时可能会遇到无法使用sin和cos函数的困扰,下面跟大家分享下用查表法写的sin、cos函数。sin函数原型需要进行浮点运算,因此有时候也可以采用查表法计算来提高程序的执行效率。

下面以采样点为256个为例,说明一下函数的具体实现。

#define TAB_N 256 //定义查表的点数

#define PI 3.1415926535897932384626433832795028841971 //定义圆周率值

float SIN_TAB[TAB_N/4+1]={ //初始化1/4的sin表(256点)

0.0000,0.0245,0.0491,0.0735,0.0980,0.1224,0.1467,0.1710,

0.1951,0.2191,0.2430,0.2667,0.2903,0.3137,0.3369,0.3599,

0.3827,0.4052,0.4276,0.4496,0.4714,0.4929,0.5141,0.5350,

0.5556,0.5758,0.5957,0.6152,0.6344,0.6532,0.6716,0.6895,

0.7071,0.7242,0.7410,0.7572,0.7730,0.7883,0.8032,0.8176,

0.8315,0.8449,0.8577,0.8701,0.8819,0.8932,0.9040,0.9142,

0.9239,0.9330,0.9415,0.9495,0.9569,0.9638,0.9700,0.9757,

0.9808,0.9853,0.9892,0.9925,0.9952,0.9973,0.9988,0.9997,

1.0000

};

/******************************************************************

我们在使用单片机编程时可能会遇到无法使用sin和cos函数的困扰,下面跟大家分享下用查表法写的sin、cos函数。sin函数原型需要进行浮点运算,因此有时候也可以采用查表法计算来提高程序的执行效率。 下面以采样点为256个为例,说明一下函数的具体实现。 #define TAB_N 256 //定义查表的点数 #define PI 3.1415926535897932384626433832795028841971 //定义圆周率值 float SIN_TAB[TAB_N/4+1]={ //初始化1/4的sin表(256点) 0.0000,0.0245,0.0491,0.0735,0.0980,0.1224,0.1467,0.1710, 0.1951,0.2191,0.2430,0.2667,0.2903,0.3137,0.3369,0.3599, 0.3827,0.4052,0.4276,0.4496,0.4714,0.4929,0.5141,0.5350, 0.5556,0.5758,0.5957,0.6152,0.6344,0.6532,0.6716,0.6895, 0.7071,0.7242,0.7410,0.7572,0.7730,0.7883,0.8032,0.8176, 0.8315,0.8449,0.8577,0.8701,0.8819,0.8932,0.9040,0.9142, 0.9239,0.9330,0.9415,0.9495,0.9569,0.9638,0.9700,0.9757, 0.9808,0.9853,0.9892,0.9925,0.9952,0.9973,0.9988,0.9997, 1.0000 }; /******************************************************************
经验分享 程序员 微信小程序 职场和发展