private static void writeOutStats(LMethod lMethod, FurthestPointFromLineMethod furthestPointFromLineMethod, int upperBoundOfPostVals, int initialHistRes, double[] posteriorValues, double[] centralDiffs, double posteriorSum) { Console.WriteLine("Posterior mean: {0}", (posteriorSum) / ((double)posteriorValues.Length)); int maxCentralDiffIdx = determineMaxCentralDiffIdx(upperBoundOfPostVals, centralDiffs); Console.WriteLine("Maximum central difference: {0}", maxCentralDiffIdx + initialHistRes); double[] xData = Enumerable.Range(initialHistRes, upperBoundOfPostVals - 1).Select(x => (double)x).ToArray(); int kneePointIdx = lMethod.findBestKneePoint(xData, posteriorValues, xData.Length); Console.WriteLine("Knee point (L method): {0}", kneePointIdx + initialHistRes); kneePointIdx = lMethod.iterativeRefinementOfTheKnee(xData, posteriorValues); Console.WriteLine("Refined knee point (L method): {0}", kneePointIdx + initialHistRes); kneePointIdx = furthestPointFromLineMethod.findBestKneePoint(xData, posteriorValues); Console.WriteLine("Knee point ('furthest point from line' method): {0}", kneePointIdx + initialHistRes); writeOutPosteriorValues(posteriorValues); }
static void Main(string[] args) { InputParser inputParser = new InputParser(); HistogramComputer histogramComputer = new HistogramComputer(); KnuthPosteriorComputer knuthPosteriorComputer = new KnuthPosteriorComputer(); LMethod lMethod = new LMethod(); FurthestPointFromLineMethod furthestPointFromLineMethod = new FurthestPointFromLineMethod(); string filename; int spaceDimension, pointNO, serverNO, upperBoundOfPostVals, initialHistRes; double[] minElems, maxElems, posteriorValues, centralDiffs; double posteriorSum; Console.WriteLine("How would you like to execute histogram building? " + "Would you like to apply stream mode?"); Console.WriteLine("(Please choose this mode only if you have prior information about " + "object number and bounding box)"); bool streamMode = bool.Parse(Console.ReadLine()); if (streamMode) { handleStreamMode(inputParser, histogramComputer, knuthPosteriorComputer, out filename, out spaceDimension, out pointNO, out serverNO, out upperBoundOfPostVals, out initialHistRes, out minElems, out maxElems, out posteriorValues, out centralDiffs, out posteriorSum); } else { handleNormalMode(inputParser, histogramComputer, knuthPosteriorComputer, out filename, out spaceDimension, out pointNO, out serverNO, out upperBoundOfPostVals, out initialHistRes, out minElems, out maxElems, out posteriorValues, out centralDiffs, out posteriorSum); } writeOutStats(lMethod, furthestPointFromLineMethod, upperBoundOfPostVals, initialHistRes, posteriorValues, centralDiffs, posteriorSum); Console.WriteLine("Press any key to continue..."); Console.Read(); }