我有一个范围介于-1.396655to之间的双打列表,1.74707甚至可能更高或更低,无论哪种方式,我都会在规范化之前知道MinandMax值是什么。我的问题是我怎么能正常化之间的这些值-1来1甚至更好的是从双值转换他们的char值0以255
任何帮助,将不胜感激。
double range = (double)(max - min);
value = 255 * (value - min)/range
Run Code Online (Sandbox Code Playgroud)
您需要表单的映射y = mx + c,并且需要找到 anm和 a c。你有两个固定的数据点,即:
1 = m * max + c
-1 = m * min + c
Run Code Online (Sandbox Code Playgroud)
从那里,它是简单的代数。
最简单的方法是首先通过从每个数字中减去 Min 来移动所有值,使 min 为 0。然后乘以 255/(Max-Min),这样移位后的 Max 将映射到 255,其他所有内容都将线性缩放。所以我相信你的等式应该是这样的:
newval = (unsigned char) ((oldval - Min)*(255/(Max-Min)))
在转换为 char 之前,您可能需要更仔细地舍入。
| 归档时间: |
|
| 查看次数: |
13476 次 |
| 最近记录: |