将数字列表从-1.0缩放到1.0

Joh*_*nny 11 algorithm scaling

这应该很简单.

我有一个数字列表.如何调整名单的价值观,之间-1.01.0为了min = -1max = 1.0

dei*_*nst 16

找到最小值和最大值

然后为每个数刻度x2 * (x - min)/( max - min) - 1

只是为了检查 -

  1. min scale to -1
  2. 和最大比例为1

如果它是一个长列表预先计算c = 2/(max - min)和缩放c * x - 1是一个好主意.


Mar*_*lin 5

这是签名规范化

1 - 获取列表中的最小值和最大值(MinVal,MaxVal)

2 - 使用此表达式转换每个数字signedNormal =(((ori​​ginalNumber - Minimum)/(Maximum - Minimum))*2.0) - 1.0

为了清楚起见,我故意使这个效率低下 - 效率会更高

double min = myList.GetMinimum();
double max = myList.GetMaximum();
double signedRangeInverse = 1.0 / (max - min);
for(int i = 0;i < myList.NumberOfItems();i++)
  myList[i] = (((myList[i] - min) * signedRangeInverse) * 2.0) - 1
Run Code Online (Sandbox Code Playgroud)

每次重新计算范围都没有意义,在划分范围内没有点,mult更快