Sam*_*Sam 1 precision matlab rounding degrees radians
我正在使用Matlab函数deg2rad将角度从度转换为弧度(很明显)。我将它们用于角度alpha和beta,这些角度又用于插入一些表格数据f(alpha, beta),这些数据是相对于alpha和beta的。出于我的目的,我将它们以弧度使用,这样我就必须时不时地来回转换。
现在,我发现-与使用f(pi/180*alpha, pi/180*beta)-相比,每当我使用using f(deg2rad(alpha), deg2rad(beta))进行插值时,插值都在边界处的插值区域之外。即,插值边界位于alpha = [-4, 4],beta = [-3, 3]并且NaN在使用时,沿这些边界进行插值给了我deg2rad。因此,这看起来像是某种舍入或机器精度误差。
现在,作为MWE,假设我要检查deg2rad(-3) == -3*pi/180,这给了我:
>> deg2rad(-3) == -3*pi/180
ans =
logical
0
Run Code Online (Sandbox Code Playgroud)
我的问题如下:
deg2rad除了与相乘以外,该函数有什么作用pi/180?提前致谢。
附言:它比我想象的还要陌生,因为它以不同的角度起作用:
>> deg2rad(2) == 2*pi/180
ans =
logical
1
Run Code Online (Sandbox Code Playgroud)
通过键入edit deg2radMATLAB 可以回答您的问题。它计算:
angleInRadians = (pi/180) * angleInDegrees;
Run Code Online (Sandbox Code Playgroud)
当然,您的版本((a*pi)/180)和MATLAB的(a*(pi/180))之间的操作顺序有所不同。此不同顺序导致舍入误差不同。
如果舍入错误导致您的函数出现问题,则您的函数不稳定,需要修复。