示例#1
0
 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];
 }
示例#2
0
 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;
 }