Class CsvInterpolation

java.lang.Object
de.tu_bs.isbs.util.math.interpolation.CsvInterpolation

public class CsvInterpolation
extends java.lang.Object
Lineare Interpolation von äquidistanten Messwerten: Datenlücken in CSV-Datei ergänzen.
Author:
reiser
  • Method Details

    • interpolateFile

      public static void interpolateFile​(java.io.File fIn, java.io.File[] fOut, int maxGap, java.lang.String fieldSep, int skipNFields, Cancelable cancelable) throws java.io.FileNotFoundException, java.io.IOException, InterpolationException, HasBeenCanceledException
      Erzeugt pro Spalte der Eingabedatei eine interpolierte Ausgabedatei. Anmerkungen: Die Berechnung erfolgt zwar mit double-Variablen, aber die Ausgabe wird durch Casting auf float gerundet; die ausgegebenen Zahlen haben etwa 8 Stellen. Achtung: Im Fehlerfall (d.h., bei Beendigung mit Exception) sind die Ausgabedateien unvollständig. Es wird nicht versucht, die Ausgabedateien zu löschen. Das muss der Aufrufer erledigen.
      Parameters:
      fIn - Quelldatei im CSV-Format ohne Kopfzeilen, in der jeder Datensatz mindestens N Felder hat, wobei N die Anzahl der Ausgabedateien ist (siehe fOut). Jedes Feld ist entweder numerisch oder leer. Leere Felder stellen zu interpolierende Datenlücken dar.
      fOut - Array mit N Zieldateien. Die Dateien werden neu angelegt. Die Quelldatei muss mindestens so viele Felder besitzen, wie Einträge im Array vorhanden sind. In jede Zieldatei wird genau eine ihr zugeordnete Spalte der Quelldatei geschrieben, wobei bis zu maxGap leere Felder linear interpoliert werden.
      maxGap - Anzahl der Datensätze, die eine Lücke maximal umfassen darf: Es wird über höchstens maxGap Datensätze interpoliert. Wenn eine Lücke größer als maxGap ist, dann wird eine InterpolationException geworfen.
      fieldSep - Feldtrenner (kann mehr als 1 Zeichen umfassen).
      skipNFields - Anzahl der zu überspringenden Felder. Von jedem Datensatz der Quelldatei werden die ersten skipNFields Felder übersprungen. Die Interpolation erfolgt dann mit den folgenden N Feldern, wobei N die Anzahl der Ausgabedateien ist (siehe fOut).
      cancelable - Ein Cancelable-Objekt, mit dem der Methode (aus einem anderen Thread heraus) ein Abbruchwunsch signalisiert werden kann. Nach Eingang eines Abbruchwunsches wird die Methode mit einer HasBeenCanceledException verlassen. Die Ausgabedateien werden nicht gelöscht - das muss der Aufrufer erledigen.
      Throws:
      java.io.FileNotFoundException - wird geworfen, falls die Eingabedatei nicht geöffnet werden kann.
      java.io.IOException - wird geworfen, falls beim Lesen oder Schreiben ein Fehler auftritt.
      InterpolationException - wird geworfen, falls der erlaubte Interpolationsbereich maxGap überschritten wurde, falls die Datei ein Feld enthält, dass sich nicht mittels Double.parseDouble() zu eine Zahl auswerten lässt, falls eine Spalte der Quelldatei mit einer Lücke beginnt, also keine untere Stützstelle für die Interpolation vorliegt, falls die Quelldatei mit einer Lücke endet, also keine obere Stützstelle für die Interpolation vorhanden ist und falls einer der Datensätze der Quelldatei nicht ausreichend viele Felder enthält.
      HasBeenCanceledException - wird geworfen, wenn über das Cancelable ein Abbruchwunsch signalisiert wurde. Bei einem Abbruch sind die Ausgabedateien unvollständig. Siehe Anmerkung oben zum Löschen der Ausgabedateien.