public static MinMax3 Create() { MinMax3 mmm = new MinMax3(); mmm.x = MinMax.Create(); mmm.y = MinMax.Create(); mmm.z = MinMax.Create(); return(mmm); }
public CalibrationData calibrate() { Vector3 avg = Vector3.zero; MinMax3 mmm = MinMax3.Create(); List <Vector3> data = new List <Vector3>(size); foreach (Vector3 v in readings.getValues()) { data.Add(v); } data.Sort((a, b) => { return(a.sqrMagnitude.CompareTo(b.sqrMagnitude)); }); //average & minMax int samples = (int)(data.Count * 0.88f); Vector3 deviaton = Vector3.zero; for (int i = 0; i < samples; ++i) { mmm.add(data[i]); avg += data[i]; } avg /= samples; //standard deviation for (int i = 0; i < samples; ++i) { deviaton += (data[i] - avg).componentsSquared(); } deviaton = (deviaton / samples).componentsSqrt(); //runs Run[] avgRuns = runBuffer3.averageRuns(); Run[] runStandardDeviations = runBuffer3.standardDeviation(avgRuns); CalibrationData cd = new CalibrationData() { average = avg, minMax3 = mmm, standardDeviation = deviaton, averageRuns = avgRuns, runSDS = runStandardDeviations }; Debug.Log(cd.ToString()); EditorApplication.isPaused = true; return(cd); }