如何缩放数字/值

时间:2012-10-18 16:30:47

标签: math

我正在使用一种硬件,我正在使用专有的编程语言与VIA串行控制进行通信,该语言看起来像是一个非常愚蠢的C版本。

设备在查询时会报告当前的音量。范围是-60到+ 20.如何将其缩放到0-255范围,增量为3?

您是否还可以提供另一个值和其他比例的示例,即-15到15缩放到0-165等等

2 个答案:

答案 0 :(得分:6)

将范围x0..x1缩放到新范围y0..y1:

    y = y0 + (y1 - y0) * (x - x0) / (x1 - x0)

因此,对于上面的第一个例子,x0 = -60,x1 = 20,y0 = 0,y1 = 255:

    y = 0 + (255 - 0) * (x - -60) / (20 - -60)

=>  y = 255 * (x + 60) / 80

答案 1 :(得分:5)

这实际上是简单的数学

首先,让我们不再需要负数:

对于范围-60< - > + 20:x + 60

现在我们有一个0< - > 80范围,只需将其缩放到255:(x / 80)* 255

把这一切都放在一个公式中,这就是你应该得到的: y =((x + 60)/ 80)* 255

基本上是这样的:

y =((x + negativeValue)/ MaxValue)* MaxScale

我希望你现在明白!