public void CurveFit(int length) { if (length < 2) { throw new Exception("Occured curvefit's data length low error in Calibrator.CurveFit"); } double[] rawX = new double[length]; double[] rawY = new double[length]; for (int i = 0; i < length; i++) { rawX[i] = Points[i].PV; rawY[i] = Points[i].SV; } DiffA = 0; DiffB = 0; DiffC = 0; try { switch (length) { case 2: RawA = rawY[0] - rawX[0]; RawB = (rawY[1] - rawY[0]) / (rawX[1] - rawX[0]); RawC = 0; break; default: if ((IsDoubleArrayAllZero(rawX) == false) && (IsDoubleArrayAllZero(rawY) == false)) { double[] raw = Fitting.LsFit(rawX, rawY, 2); RawA = raw[0]; RawB = raw[1]; RawC = raw[2]; } else { RawA = 0; RawB = 1; RawC = 0; } break; } Active = true; } catch (Exception e) { Clear(); Resource.TLog.Log((int)ELogItem.Exception, e.ToString()); throw new Exception("Occured calculation error in Calibrator.CurveFit"); } }