Colors 如何计算色调值从0到360的平均值和标准偏差?

Colors 如何计算色调值从0到360的平均值和标准偏差?,colors,statistics,hue,Colors,Statistics,Hue,假设使用简单的HSV颜色模型采集5个色调样本,其值为355、5、5、5,就感知而言,所有色调均为红色且彼此“相邻”。但简单的平均值是75,远远不是0或360,接近黄绿色 计算该平均值和相关标准的更好方法是什么?简单的解决方案是将这些角度转换为一组向量,从极坐标转换为笛卡尔坐标 由于您使用的是颜色,请将其视为(a*,b*)平面的转换。然后取这些坐标的平均值,然后再回到极坐标形式。在matlab中完成 theta = [355,5,5,5,5]; x = cosd(theta); % cosine

假设使用简单的HSV颜色模型采集5个色调样本,其值为355、5、5、5,就感知而言,所有色调均为红色且彼此“相邻”。但简单的平均值是75,远远不是0或360,接近黄绿色


计算该平均值和相关标准的更好方法是什么?

简单的解决方案是将这些角度转换为一组向量,从极坐标转换为笛卡尔坐标

由于您使用的是颜色,请将其视为(a*,b*)平面的转换。然后取这些坐标的平均值,然后再回到极坐标形式。在matlab中完成

theta = [355,5,5,5,5];
x = cosd(theta); % cosine in terms of degrees
y = sind(theta); % sine with a degree argument
现在,取x和y的平均值,计算角度,然后 将弧度转换回度

meanangle = atan2(mean(y),mean(x))*180/pi
meanangle =
       3.0049
当然,此解仅对平均角有效。正如你们所看到的,它直接产生了一个和角度平均值一致的结果,我认识到355度实际上是-5度

mean([-5 5 5 5 5])
ans =
     3
要计算标准偏差,最简单的方法是

std([-5 5 5 5 5])
ans =
       4.4721

是的,这需要我明确地进行包装。

我认为user85109提出的方法是计算平均值的好方法,但不是标准偏差: 想象有三个角度:180,180,181

平均值应正确计算,近似等于180

但从[180180,-179]可以计算出一个高方差,而实际上它接近于零

乍一看,我会分别计算半正角[0到180]和负角[0,-180]的均值和方差,然后我会计算组合方差


考虑到全局平均值及其与局部平均值之间的差异必须在两个方向上进行计算:顺时针和逆时针,并且必须选择正确的一个。

在谷歌进行了大量的挖掘之后,从一篇讨论平均风向的文章中找到了stackoverflow的链接:但它没有解决标准偏差问题。一旦你得到了满意的平均值,你就可以根据平均偏差计算标准偏差,对吗?@AakashM,我还在努力解决这个问题。我知道密码。我对统计数据有点模糊。在我看到这个问题试图得到解答的几个网站上,我也看到了人为的数据集,比如270和90的两个条目,它们说平均值是没有意义的。为了避免这种情况,这里有一个我正在使用的实际值的小样本:(原始均值和标准差为:185.658 174.848)347.059 0 359.059 347 354.05 353.012 13.012 358.118 8.06723 354.118 0.967742 0.97561 351.074 8.06324 346.098 0.941176 1.88235 355.082 6.93227 359.059 1.88358.088 0.97166 0.983607哦,我明白了。要计算给定平均值的s.d.,请按照eg(警告:Comic Sans:p)进行操作,谢谢。是的,标准偏差计算必须始终考虑包裹,无论是在0,红色,以度为单位,还是在π和负π,蓝绿色,以弧度为单位。除std外,还存在表征循环数据的方法。见上面的链接。