/src/main/java/stream/series/util/EuclideanDistance.java

https://bitbucket.org/cbockermann/stream-analysis · Java · 49 lines · 26 code · 14 blank · 9 comment · 3 complexity · 587c227d7ba7cf9d047f04c97b7e50e7 MD5 · raw file

  1. package stream.series.util;
  2. import java.util.Vector;
  3. /**
  4. * simple implementation of euclidean distance for elements in real valued
  5. * spaces.
  6. *
  7. * @author Markus Kokott ( markus.kokott(at)udo.edu ) 27.02.2012
  8. */
  9. public class EuclideanDistance extends Distance {
  10. /**
  11. *
  12. */
  13. private static final long serialVersionUID = -2204313980397092277L;
  14. private Integer decimals = -1;
  15. public EuclideanDistance() {
  16. }
  17. public EuclideanDistance(Integer decimals) {
  18. if (decimals > 0) {
  19. this.decimals = decimals;
  20. }
  21. }
  22. @Override
  23. protected Double computeDistance(Vector<Double> coordinates_a,
  24. Vector<Double> coordinates_b) {
  25. Double sum = 0d;
  26. for (int i = 0; i < coordinates_a.size(); i++) {
  27. sum += Math.pow((coordinates_a.get(i) - coordinates_b.get(i)), 2);
  28. }
  29. if (this.decimals > 0) {
  30. return NumericValueTransformator.roundDouble(Math.sqrt(sum),
  31. this.decimals);
  32. }
  33. return Math.sqrt(sum);
  34. }
  35. }