c相当于matlab的sind和cosd函数

时间:2013-03-10 16:35:45

标签: c matlab math.h

所以我正在使用一些matlab代码手动转换为c代码。我只是想知道是否有一个等效于我在matlab代码中看到的sind和cosd函数的c。我想这会以度为单位返回答案而不是以弧度为单位给出结果的c sin和cos函数。我想我可以将结果乘以180 / pi,但只是想知道math.h中是否有库函数我没有看到。或者即使gsl库中有某些内容可以执行此操作。

5 个答案:

答案 0 :(得分:9)

由于M_PI的不精确性,H2CO3的解决方案将对大型参数造成灾难性的精度损失。任何参数的一般安全版本是:

#define sind(x) (sin(fmod((x),360) * M_PI / 180))

答案 1 :(得分:3)

不,C标准库中的三角函数都以弧度为单位。但是你可以轻松地使用宏或内联函数:

#define sind(x) (sin((x) * M_PI / 180))

inline double sind(double x)
{
    return sin(x * M_PI / 180);
}

请注意,当您想要更改函数的返回值(所谓的反向或“arcus”函数)时,需要与转换相反:

inline double asind(double x)
{
    return asin(x) / M_PI * 180;
}

答案 2 :(得分:1)

不,它们在C库中不可用。您只能在C库中找到弧度值参数或返回值。

答案 3 :(得分:1)

另外,请注意,sind和cosd等以度为单位返回结果,它们以度为单位获取参数。 asind和acosd以度数返回结果。

答案 4 :(得分:0)

不在C库中。所有三角C库函数都将参数作为弧度值而非度数。正如您所说,您需要自己执行转换或使用专用库。