如何根据基本事实计算角度值的 L1 和 L2 范数(其中角度值具有 -180 度到 180 度的周期)?
如果我有一组数据
ip_data[]
和一组真实值 gt[]
那么可以计算 L1 和 L2 范数:
L1 norm = sum(abs(gt[i] - ip_data[i]))
L2 norm = sqrt(sum( (gt[i] - ip_data[i])^2 ))
但是,一般来说,在角度值的情况下,它们有-180度到180度的周期。那么,让我们说
gt[] = [175, 179, 177]
ip_data_a[] = [165, 169, 167]
ip_data_b[] = [-175, -171, -173]
对于
ip_data_a[]
,
L1 = |175 - 165| + |179 - 169| + |177 - 167| = 30
L2 = sqrt(10^2 + 10^2 + 10^2) = sqrt(300) = 17.32
对于
ip_data_b[]
,
L1 = |175 - (-175)| + |179 - (-171)| + |177 - (-173)| = 1050
L2 = sqrt(350^2 + 350^2 + 350^2) = sqrt(367500) = 606.22
可以看出,对于
L1
v/s L2
的 ip_data_a[]
(或 ip_data_b[]
)存在巨大差异,即使两个数据数组中的所有值都与地面实况正好相差 10 度除了相反的方向。
将这些角度从 [-180, 180] 归一化到 [0, 360] 没有帮助。因为当 GT 角度接近 360 度并且给定的角度值接近 0 度时会发生同样的事情,反之亦然。
那么,在这种情况/数据中,计算 L1 和 L2 范数的正确方法是什么才能正确评估数据?
看似迂回,但通过三角函数可能更容易
即求解单位向量之间的夹角。例如角度可以从内积的反余弦得到。
如您所知,角度的单位向量是
[cos(angle), sin(angle)]^T
。cos( a - b )
是两个单位向量之间的内积:cos(a)cos(b) + sin(a)sin(b)
.a
,b
是这个的反余弦。