Ahoi
Meine Meinung: Wer 20.000 Messwerte ungefiltert in so eine Komponente jagt, dem fehlen -ehrlich gesagt- grundlegende Kentnisse in der Aufbereitung und vor allen Dingen der Bedeutung der Messwerte. Erwartet von Steema keine Wunder, dafür gibt es andere Firmen.
Was sind denn das für 20.000 Punkte? Wie genau soll das Fitting sein? Erwartet ihr Peaks? Genügen die Messwerte theoretisch einer Funktion? Kann man also Regression ansetzen?
Ich habe z.B. mal ein Fitting mit Hilfe einer Spline-Funktion erstellt, bei der so lange Punkte entfernt wurden, bis die resultierende Spline die gelöschten Punkte nicht mehr approximiert hat. Damit lassen sich glatte Bereiche auf 2-3 Punkte reduzieren, Peaks bleiben jedoch erhalten. Das Verfahren war verblüffend simpel, erstaunlich schnell und sehr erfolgreich. Es lief vor 20 Jahren (
) auf einem Motorola-Rechner, der mit 10MHz getaktet war in RM-Basic, einer Interpreter-Sprache. Es handelte sich zwar nicht um 20.000 Punkte, ich könnte mir aber vorstellen, das man zunächst Chunks à 100 Punkte erstellt, die einzeln glättet und dann das Verfahren abschließend auf alle Punkte anwendet. Richtig schnell ist das aber auch nicht.
Ich würde erstmal einen Filter vorschalten, denn offensichtlich benötigt ihr die 20.000 Punkte gar nicht. Ein Filter kann z.B. einen Punkt P[i] nur dann durchlassen, wenn sich sein Y-Wert signifikant von P[i-1] unterscheidet. Alternativ kannst Du auch über die letzten N Punkte eine polynomiale Regression laufen lassen und P[i] nur dann durchlassen, wenn eine Extrapolation dieses Punktes ihn nicht trifft. Oder Du nimmst einen 'Moving Average', was aufs Gleiche rauskommt.
Völlig unwissenschaftlich ist ein Ausgleichs-Spline, der die Punkteschar glättet, aber das machen die Steema-Leute bestimmt. Es läuft auf ein Gleichungssystem mit 20.000 Unbekannten hinaus, das -soweit ich weiss- bestenfalls in O(n*n) gelöst werden kann, ergo Dein CPU-Killer.
Ein Filter, wie von mir vorgeschlagen, dürfte jedoch in O(n) durchlaufen und recht brauchbare Ergebnisse liefern. Dazu sind aber Kenntnisse des physikalischen Hintergrundes der Messwerte nötig, um eine geeignete Filterfunktion zu entwickeln.