我之間的任何-1.396655
到1.74707
範圍雙打的名單甚至可以更高或更低,無論哪種方式,我想知道是什麼Min
和Max
值在正常化之前。我的問題是如何規範之間-1
到1
或這些值甚至更好的是從雙值將它們轉換成char的0
值255
正常化雙打的名單範圍-1到1或0 - 255
任何幫助,將不勝感激。
double range = (double)(max - min);
value = 255 * (value - min)/range
我之間的任何-1.396655
到1.74707
範圍雙打的名單甚至可以更高或更低,無論哪種方式,我想知道是什麼Min
和Max
值在正常化之前。我的問題是如何規範之間-1
到1
或這些值甚至更好的是從雙值將它們轉換成char的0
值255
正常化雙打的名單範圍-1到1或0 - 255
任何幫助,將不勝感激。
double range = (double)(max - min);
value = 255 * (value - min)/range
最簡單的事情就是先將所有的值都移動,使min爲0,從每個數中減去Min。然後乘以255 /(最大 - 最小),這樣移位後的最大值將被映射到255,並且其他所有值都將線性縮放。所以,我相信你會公式是這樣的:
newval = (unsigned char) ((oldval - Min)*(255/(Max-Min)))
您可能要鑄造成char前更仔細地圓一點。
您需要的形式y = mx + c
的mapping,你需要找到一個m
和c
。你有兩個固定的數據點,即:
1 = m * max + c
-1 = m * min + c
從那裏,它是simple algebra。
您可能會發現[如何標準化int值列表](http://stackoverflow.com/q/1226587/1048330)有幫助。 – tenorsax
對不起,我是一個noob,我需要幫助每隔一段時間:(我的第一個票下來...讓我感覺垃圾。有時當你試圖工作的東西出去,你搜索高低,找不到任何東西或如果你做你只是不能理解它,所以我想到這個偉大的社區,我知道有人友好會嘗試幫助/讓我理解。 – Elgoog