public float GetSlope(SectionPathLossCalcParam param, short[] altitudes, int nIndex) { int fNumber = (int) (param.MergeEdgeMaxDis / (4f * param.CalcResolution)); if (fNumber < 1) { fNumber = 1; } fNumber = Math.Min(this.Trim(fNumber, 5, 10), nIndex); float[] a = new float[fNumber * 2]; float[] y = new float[fNumber]; int num2 = nIndex; for (int i = 0; i < fNumber; i++) { a[i] = num2 * param.CalcResolution; y[i] = altitudes[num2 - 1]; num2--; } float[] numArray3 = new float[2]; float[] numArray4 = new float[3]; LinearRegression regression = new LinearRegression(); MatrixOperation operation = new MatrixOperation(); regression.mvfitgn(a, y, numArray3, fNumber, 2, false); return numArray3[1]; }
private ReturnValue Recursion(float[] valueMatrix, float[] actualLossMatrix, float[] coeMatrix, int validDataNumber, int coeNumNeedAdjust, bool isAdjustClutter) { ReturnValue value2 = ReturnValue.PROPADJ_SUCCESS; if (coeNumNeedAdjust == 0) { return ReturnValue.PROPCOR_NOSUCESS; } if (validDataNumber < 10) { return ReturnValue.PROPCOR_LACKDATAERROR; } float[] numArray = new float[validDataNumber]; LinearRegression regression = new LinearRegression(); MatrixOperation operation = new MatrixOperation(); int num = 0; try { num = regression.mvfitgn(valueMatrix, actualLossMatrix, coeMatrix, validDataNumber, coeNumNeedAdjust, isAdjustClutter); } catch (Exception exception) { WriteLog.Logger.Error(exception.StackTrace); } if (num != 0) { return ReturnValue.PROPCOR_NOTFIT; } return value2; }