我使用Matlab函数deg2rad将角度从度转换为弧度(很明显)。我将它们用于角度alpha和beta,它们依次用于插值一些表格数据f(alpha, beta),即alpha和beta的度数。为了我的目的,我在弧度中使用它们,所以我不得不不时地来回转换。
现在,我发现--而不是使用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,这给了我:
>> deg2rad(-3) == -3*pi/180
ans =
logical
0我的问题如下:
如何防止这种行为,在这种情况下,当我在插值区域的边缘附近操作时,使用pi/180基本上是没有用的?除了与函数相乘外,deg2rad函数是做什么的?
提前谢谢。
附注:它甚至比我想象的还要奇怪,因为从不同的角度看,它确实起作用了:
>> deg2rad(2) == 2*pi/180
ans =
logical
1发布于 2019-11-12 14:56:51
你的问题通过在MATLAB中输入edit deg2rad来回答。它计算:
angleInRadians = (pi/180) * angleInDegrees;当然,操作顺序在您的版本((a*pi)/180)和MATLAB的(a*(pi/180))之间是不同的。这种不同的顺序会导致舍入错误不同。
如果舍入错误导致函数出现问题,则您的函数是不稳定的,需要修复。
https://stackoverflow.com/questions/58820947
复制相似问题