我的值范围是 0 到 255。
有一种方法返回一个数组,其最小值和最大值在此范围内,即:13、15、20、27、50 ... 240 其中 13 是最小值,240 是最大值
我需要缩放这些值,使 13 变为 0,240 变为 255,并按比例缩放它们之间的所有其他值。
是否有任何 C# 方法可以做到这一点?
谢谢!
最佳答案
使用这个公式
y=mx+c
其中 m = (255-0)/(244-13)
和 c= -13*m
所以你必须这样转换数组
public double[] GetScaling(double[] arr, double min, double max)
{
double m = (max-min)/(arr.Max()-arr.Min());
double c = min-arr.Min()*m;
var newarr=new double[arr.Length];
for(int i=0; i< newarr.Length; i++)
newarr[i]=m*arr[i]+c;
return newarr;
}
关于C# 方法来缩放值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2675196/