首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么用deg2rad转换角度和用pi/180相乘的结果不同?

为什么用deg2rad转换角度和用pi/180相乘的结果不同?
EN

Stack Overflow用户
提问于 2019-11-12 14:43:03
回答 1查看 239关注 0票数 1

我使用Matlab函数deg2rad将角度从度转换为弧度(很明显)。我将它们用于角度alphabeta,它们依次用于插值一些表格数据f(alpha, beta),即alphabeta的度数。为了我的目的,我在弧度中使用它们,所以我不得不不时地来回转换。

现在,我发现--而不是使用f(pi/180*alpha, pi/180*beta) --每当我使用f(deg2rad(alpha), deg2rad(beta))进行插值时,插值就在边界处的插值区域之外。也就是说,插值边界在alpha = [-4, 4]beta = [-3, 3],沿这些边界进行插值,当使用deg2rad时,给出了NaN。因此,这看起来像是某种舍入或机器精度错误。

现在,作为一个MWE,假设我想检查deg2rad(-3) == -3*pi/180,这给了我:

代码语言:javascript
复制
>> deg2rad(-3) == -3*pi/180
ans =
  logical
   0

我的问题如下:

如何防止这种行为,在这种情况下,当我在插值区域的边缘附近操作时,使用pi/180基本上是没有用的?除了与函数相乘外,deg2rad函数是做什么的?

提前谢谢。

附注:它甚至比我想象的还要奇怪,因为从不同的角度看,它确实起作用了:

代码语言:javascript
复制
>> deg2rad(2) == 2*pi/180
ans =
  logical
   1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-12 14:56:51

你的问题通过在MATLAB中输入edit deg2rad来回答。它计算:

代码语言:javascript
复制
angleInRadians = (pi/180) * angleInDegrees;

当然,操作顺序在您的版本((a*pi)/180)和MATLAB的(a*(pi/180))之间是不同的。这种不同的顺序会导致舍入错误不同。

如果舍入错误导致函数出现问题,则您的函数是不稳定的,需要修复。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58820947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档