X-Git-Url: http://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=src%2Ftim%2Fprune%2Ffunction%2Festimate%2FLearnParameters.java;fp=src%2Ftim%2Fprune%2Ffunction%2Festimate%2FLearnParameters.java;h=3efaa2f33161808ac9bab161d4a9cb024dd9a8fa;hp=74021dd3b2ba46fd03e6fddbd9054b50ba6ae65a;hb=8b20e3e027058cdf6ff52993ee5576193d08667a;hpb=2302358503c38817e19f6e529f6c9e530aac0e86 diff --git a/src/tim/prune/function/estimate/LearnParameters.java b/src/tim/prune/function/estimate/LearnParameters.java index 74021dd..3efaa2f 100644 --- a/src/tim/prune/function/estimate/LearnParameters.java +++ b/src/tim/prune/function/estimate/LearnParameters.java @@ -26,7 +26,7 @@ import tim.prune.I18nManager; import tim.prune.config.Config; import tim.prune.data.DataPoint; import tim.prune.data.Distance; -import tim.prune.data.RangeStats; +import tim.prune.data.RangeStatsWithGradients; import tim.prune.data.Track; import tim.prune.data.Unit; import tim.prune.data.UnitSetLibrary; @@ -100,7 +100,7 @@ public class LearnParameters extends GenericFunction implements Runnable { _progress.setMaximum(100); // Go through the track and collect the range stats for each sample - ArrayList statsList = new ArrayList(20); + ArrayList statsList = new ArrayList(20); Track track = _app.getTrackInfo().getTrack(); final int numPoints = track.getNumPoints(); final int sampleSize = numPoints / 30; @@ -108,15 +108,15 @@ public class LearnParameters extends GenericFunction implements Runnable for (int i=0; i<30; i++) { int startIndex = i * sampleSize; - RangeStats stats = getRangeStats(track, startIndex, startIndex + sampleSize, prevStartIndex); + RangeStatsWithGradients stats = getRangeStats(track, startIndex, startIndex + sampleSize, prevStartIndex); if (stats != null && stats.getMovingDistanceKilometres() > 1.0 && !stats.getTimestampsIncomplete() && !stats.getTimestampsOutOfSequence() && stats.getTotalDurationInSeconds() > 100 - && stats.getStartIndex() > prevStartIndex) + && startIndex > prevStartIndex) { // System.out.println("Got stats for " + stats.getStartIndex() + " to " + stats.getEndIndex()); statsList.add(stats); - prevStartIndex = stats.getStartIndex(); + prevStartIndex = startIndex; } _progress.setValue(i); } @@ -246,7 +246,8 @@ public class LearnParameters extends GenericFunction implements Runnable * @param inPreviousStartIndex the previously used start index, or -1 * @return range stats object or null if required information missing from this bit of the track */ - private RangeStats getRangeStats(Track inTrack, int inStartIndex, int inEndIndex, int inPreviousStartIndex) + private RangeStatsWithGradients getRangeStats(Track inTrack, int inStartIndex, + int inEndIndex, int inPreviousStartIndex) { // Check parameters if (inTrack == null || inStartIndex < 0 || inEndIndex <= inStartIndex || inStartIndex > inTrack.getNumPoints()) { @@ -297,7 +298,7 @@ public class LearnParameters extends GenericFunction implements Runnable // Check moving distance if (movingRads >= minimumRads) { - return new RangeStats(inTrack, start, endIndex); + return new RangeStatsWithGradients(inTrack, start, endIndex); } return null; } @@ -307,12 +308,12 @@ public class LearnParameters extends GenericFunction implements Runnable * @param inStatsList list of (non-null) RangeStats objects * @return A matrix with n rows and 5 columns */ - private static Matrix buildAMatrix(ArrayList inStatsList) + private static Matrix buildAMatrix(ArrayList inStatsList) { final Unit METRES = UnitSetLibrary.UNITS_METRES; Matrix result = new Matrix(inStatsList.size(), 5); int row = 0; - for (RangeStats stats : inStatsList) + for (RangeStatsWithGradients stats : inStatsList) { result.setValue(row, 0, stats.getMovingDistanceKilometres()); result.setValue(row, 1, stats.getGentleAltitudeRange().getClimb(METRES)); @@ -329,11 +330,11 @@ public class LearnParameters extends GenericFunction implements Runnable * @param inStatsList list of (non-null) RangeStats objects * @return B matrix with single column of n rows */ - private static Matrix buildBMatrix(ArrayList inStatsList) + private static Matrix buildBMatrix(ArrayList inStatsList) { Matrix result = new Matrix(inStatsList.size(), 1); int row = 0; - for (RangeStats stats : inStatsList) + for (RangeStatsWithGradients stats : inStatsList) { result.setValue(row, 0, stats.getMovingDurationInSeconds() / 60.0); // convert seconds to minutes row++; @@ -372,12 +373,13 @@ public class LearnParameters extends GenericFunction implements Runnable * @param inRowToIgnore row index to ignore, or -1 to use them all * @return true if the samples look ok */ - private static boolean isRangeSetSufficient(ArrayList inRangeSet, int inRowToIgnore) + private static boolean isRangeSetSufficient(ArrayList inRangeSet, int inRowToIgnore) { - int numGC = 0, numSC = 0, numGD = 0, numSD = 0; // number of samples with gentle/steep climb/descent values > 0 + // number of samples with gentle/steep climb/descent values > 0 + int numGC = 0, numSC = 0, numGD = 0, numSD = 0; final Unit METRES = UnitSetLibrary.UNITS_METRES; int i = 0; - for (RangeStats stats : inRangeSet) + for (RangeStatsWithGradients stats : inRangeSet) { if (i != inRowToIgnore) { @@ -396,7 +398,7 @@ public class LearnParameters extends GenericFunction implements Runnable * @param inStatsList list of stats * @return results in an object */ - private MatrixResults reduceSamples(ArrayList inStatsList) + private MatrixResults reduceSamples(ArrayList inStatsList) { int statsIndexToRemove = -1; Matrix answer = null;