为什么用 deg2rad 转换角度和乘以 pi/180 的结果不同?
Why do the outcomes of converting an angle with deg2rad and by multiplying with pi/180 differ?
我正在使用 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
我的问题如下:
- 在插值区域边缘附近操作时,使用 deg2rad 对我来说基本上没有用,我该如何防止这种行为?
- 除了与
pi/180
相乘之外,deg2rad
函数还有什么作用?
提前致谢。
P.s。它比我想象的还要奇怪,因为不同的角度,它确实有效:
>> deg2rad(2) == 2*pi/180
ans =
logical
1
在 MATLAB 中输入 edit deg2rad
即可回答您的问题。它计算:
angleInRadians = (pi/180) * angleInDegrees;
当然,您的版本 ((a*pi)/180
) 和 MATLAB (a*(pi/180)
) 的操作顺序不同。这种不同的顺序会导致舍入误差不同。
如果舍入错误导致您的函数出现问题,则您的函数不稳定,需要修复。
我正在使用 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
我的问题如下:
- 在插值区域边缘附近操作时,使用 deg2rad 对我来说基本上没有用,我该如何防止这种行为?
- 除了与
pi/180
相乘之外,deg2rad
函数还有什么作用?
提前致谢。
P.s。它比我想象的还要奇怪,因为不同的角度,它确实有效:
>> deg2rad(2) == 2*pi/180
ans =
logical
1
在 MATLAB 中输入 edit deg2rad
即可回答您的问题。它计算:
angleInRadians = (pi/180) * angleInDegrees;
当然,您的版本 ((a*pi)/180
) 和 MATLAB (a*(pi/180)
) 的操作顺序不同。这种不同的顺序会导致舍入误差不同。
如果舍入错误导致您的函数出现问题,则您的函数不稳定,需要修复。