假設對於顏色使用簡單的HSV模型拍攝5個色調樣本,其值爲355,5,5,5,5,就感知而言所有都是紅色的色調和「下一個」。但簡單的平均值是75,遠離0或360,接近黃綠色。如何計算從0到360的色調值的平均值和標準偏差?
什麼是更好的方式來計算這個均值和相關的std?
假設對於顏色使用簡單的HSV模型拍攝5個色調樣本,其值爲355,5,5,5,5,就感知而言所有都是紅色的色調和「下一個」。但簡單的平均值是75,遠離0或360,接近黃綠色。如何計算從0到360的色調值的平均值和標準偏差?
什麼是更好的方式來計算這個均值和相關的std?
簡單的解決方案是將這些角度轉換爲一組矢量,從極座標到笛卡爾座標。
由於您正在使用顏色,因此將其視爲轉換爲(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
是的,這要求我做明確的包裹。
經過相當多的谷歌挖掘後,發現一個鏈接回到從實際討論平均風向的帖子到stackoverflow:http://stackoverflow.com/questions/491738/how-do-you-calculate-the-average-一組角度/ 3651941#3651941但它沒有解決標準差的問題。 – drb
一旦你有了一個意思,你很滿意,你可以計算平均偏差的標準偏差,對吧? – AakashM
@AakashM,我仍然試圖解決這個問題。我知道代碼。統計我有點朦朧。 – drb