From e2a684a9ce2a54434ec63e5d7b5b27493710f61c Mon Sep 17 00:00:00 2001 From: Armin Wolf Date: Thu, 27 Jul 2017 16:59:23 +0200 Subject: [PATCH] kleines bugfix --- dataset/metrik-beispiel.csv | 9 +++++++++ .../Algorithms/LeastMedianOfSquaresEstimator.java | 4 ++-- .../Presenter/Algorithms/RepeatedMedianEstimator.java | 4 ++-- .../java/Presenter/Algorithms/TheilSenEstimator.java | 3 +-- src/main/java/Presenter/Import/DataImporter.java | 2 +- src/main/java/Presenter/IntersectionCounter.java | 11 ++++++++--- src/main/java/View/PlotDialog.java | 2 +- 7 files changed, 24 insertions(+), 11 deletions(-) create mode 100644 dataset/metrik-beispiel.csv diff --git a/dataset/metrik-beispiel.csv b/dataset/metrik-beispiel.csv new file mode 100644 index 0000000..17c4bc1 --- /dev/null +++ b/dataset/metrik-beispiel.csv @@ -0,0 +1,9 @@ +0,2,3 +1,4,4 +2,5,2 +3,6,4 +4,7,2 +5,7,5 +6,8,7 +7,9,5 +8,11,6 diff --git a/src/main/java/Presenter/Algorithms/LeastMedianOfSquaresEstimator.java b/src/main/java/Presenter/Algorithms/LeastMedianOfSquaresEstimator.java index 0426d81..9b04923 100644 --- a/src/main/java/Presenter/Algorithms/LeastMedianOfSquaresEstimator.java +++ b/src/main/java/Presenter/Algorithms/LeastMedianOfSquaresEstimator.java @@ -353,8 +353,8 @@ public class LeastMedianOfSquaresEstimator extends Observable implements Algorit public void getResult() { if (presenter != null) { setChanged(); - double m = (getSigmaMin().getX2() + getSigmaMin().getX1()) * -0.5; - double b = (getSigmaMin().getY2() + getSigmaMin().getY1()) * 0.5; + double m = (getSigmaMin().getX2() + getSigmaMin().getX1()) * 0.5; + double b = (getSigmaMin().getY2() + getSigmaMin().getY1()) * -0.5; String[] result = {"lms", m+"", b+""}; notifyObservers(result); } diff --git a/src/main/java/Presenter/Algorithms/RepeatedMedianEstimator.java b/src/main/java/Presenter/Algorithms/RepeatedMedianEstimator.java index eccec55..f47e6ce 100644 --- a/src/main/java/Presenter/Algorithms/RepeatedMedianEstimator.java +++ b/src/main/java/Presenter/Algorithms/RepeatedMedianEstimator.java @@ -267,8 +267,8 @@ public class RepeatedMedianEstimator extends Observable implements Algorithm { public void getResult() { if (presenter != null) { setChanged(); - double m = thetaLow * (-1); - double b = ( + double m = thetaLow; + double b = (-1)*( (linesInCenterSlab.get(0).getM() * (thetaLow)) + linesInCenterSlab.get(0) .getB()); diff --git a/src/main/java/Presenter/Algorithms/TheilSenEstimator.java b/src/main/java/Presenter/Algorithms/TheilSenEstimator.java index 7153783..9226c52 100644 --- a/src/main/java/Presenter/Algorithms/TheilSenEstimator.java +++ b/src/main/java/Presenter/Algorithms/TheilSenEstimator.java @@ -244,8 +244,7 @@ public class TheilSenEstimator extends Observable implements Algorithm { m = resultSt.get(((size + 1) / 2) - 1).getX(); } - b = y - (x * m); - m *= -1; + b = (x * m) - y; String[] result = new String[]{"ts", m + "", b + ""}; notifyObservers(result); diff --git a/src/main/java/Presenter/Import/DataImporter.java b/src/main/java/Presenter/Import/DataImporter.java index d3136c8..cbacae2 100644 --- a/src/main/java/Presenter/Import/DataImporter.java +++ b/src/main/java/Presenter/Import/DataImporter.java @@ -54,7 +54,7 @@ public class DataImporter extends Observable{ for(String[] nextLine : lines) { // nextLine[] is an array of values from the line Double x = Double.parseDouble(nextLine[1]); - Double y = Double.parseDouble(nextLine[2]); + Double y = Double.parseDouble(nextLine[2]) * (-1); Line line = new Line(x,y); line.setId(counter+""); this.presenter.getModel().addLine(line); diff --git a/src/main/java/Presenter/IntersectionCounter.java b/src/main/java/Presenter/IntersectionCounter.java index 834fb2b..93f706f 100644 --- a/src/main/java/Presenter/IntersectionCounter.java +++ b/src/main/java/Presenter/IntersectionCounter.java @@ -132,7 +132,7 @@ public class IntersectionCounter { * @param a Eingabefeld mit den Elementen die überprüft werden sollen. * @param start Startpunkt des Eingabefeldes. * @param end Endpunkt des Eingabefeldes. - * @param aux Groundtruth Ordnung um die Anzahl der Inversionen zu bestimmen. + * @param aux Temporäres Array das beim Mergen eine Kopie des original Arrays ist. * @return Anzahl der inversionen zwischen a und aux. */ public int countInversions(List a, int start, int end, List aux) { @@ -150,11 +150,16 @@ public class IntersectionCounter { int left = start; int right = mid + 1; int index = start; + //hier beginnt das merging + //iteriere über die Teillisten + //Two-way Merge - Knuth Vol 3 The Art of Computer Programming - while (left <= mid && right <= end) { + //wenn die linke Teilliste das kleinere Element besitzt kopiere + //das Element in das neue Array if (aux.get(left) < aux.get(right)) { a.set(index++, aux.get(left++)); } else { - + //merke die inversionspaare for (int i = left; i <= mid; i++) { // System.out.println(aux.get(i)+" -- "+ aux.get(right)); inversions.add(new Pair(aux.get(i), aux.get(right))); @@ -227,7 +232,7 @@ public class IntersectionCounter { for (int i = 0; i < inversions.size(); i++) { result.add(new Pair(dictionaryBACK.get(inversions.get(i).getP1()), - dictionaryBACK.get(inversions.get(i).getP2()))); + dictionaryBACK.get(inversions.get(i).getP2()))); } for (Pair p : result) { diff --git a/src/main/java/View/PlotDialog.java b/src/main/java/View/PlotDialog.java index 7d7b8bc..860d12c 100644 --- a/src/main/java/View/PlotDialog.java +++ b/src/main/java/View/PlotDialog.java @@ -113,7 +113,7 @@ public class PlotDialog extends JPanel { ArrayList coordinates = new ArrayList<>(); series = new XYSeries("points"); for (Line p : points) { - series.add(p.getM(), p.getB()); + series.add(p.getM(), p.getB()* (-1)); coordinates.add(p.getM()); }