计算两个角度之间的绝对差

Calculating absolute differences between two angles

我有两个角a和b,我想计算两个角的绝对差值。例子

>> absDiffDeg(360,5)
ans = 5
>> absDiffDeg(-5,5)
ans = 10
>> absDiffDeg(5,-5)
ans = 10

在用角度做数学运算时,首先对它们进行归一化是很有用的。此函数将所有角度标准化为 (-180,180] 范围:

 normalizeDeg=@(x)(-mod(-x+180,360)+180)

现在有了归一化这个功能,可以计算出绝对差:

absDiffDeg=@(a,b)abs(normalizeDeg(normalizeDeg(a)-normalizeDeg(b)))

使用 unwrap 怎么样?这是一个尝试:

absDiffDeg = @(a,b) abs(diff(unwrap([a,b]/180*pi)*180/pi));

最佳,

归一化差异,不需要abs操作,因为mod(x,y)取y的符号。

normDeg = mod(a-b,360);

这将是一个介于 0-360 之间的数字,但我们想要介于 0-180 之间的最小角度。最简单的方法是

absDiffDeg = min(360-normDeg, normDeg);