Joh*_*nny 11 algorithm scaling
这应该很简单.
我有一个数字列表.如何调整名单的价值观,之间-1.0并1.0为了min = -1和max = 1.0?
dei*_*nst 16
找到最小值和最大值
然后为每个数刻度x来2 * (x - min)/( max - min) - 1
只是为了检查 -
如果它是一个长列表预先计算c = 2/(max - min)和缩放c * x - 1是一个好主意.
这是签名规范化
1 - 获取列表中的最小值和最大值(MinVal,MaxVal)
2 - 使用此表达式转换每个数字signedNormal =(((originalNumber - 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更快