1

我想编写一个函数,该函数最多可获取六个参数和一个输入值数组,并根据以下条件将输入值映射到输出:

  1. 我们知道输入值的最小值和最大值。
  2. 输出最小值和最大值应该是一个常数值(比如 -10,100)。
  3. 基于参数,它比接近 inputmax 的输入值放大小的输入值。
  4. 映射后,输出的最小值和最大值应该是常数值。

我想我需要某种对数放大。但我不确定如何定义它以使其符合上述条件。

我可以为此使用什么数学公式?

我需要在 c++ 和 c# 中实现它。如果我知道如何在其中一个中实现它,我可以将它转换为另一个。

4

1 回答 1

1

我真的不明白问题出在哪里;我错过了什么吗?你所说的似乎需要一个简单的组件操作,形式如下:

forall x in range
    out[x] = ((in[x]-in_min)/(in_max-in_min))^gamma * (out_max-out_min)+out_min

其中gamma是一些常数,如果您希望低值比高值放大更多,则可能小于 1。把它想象成“伽玛校正”。

但是,我看不到您的“6 个参数”是如何发挥作用的?

于 2013-06-12T19:53:27.480 回答