AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Kurvenglättung / Interpolation / Extrapolation berechnen?
Thema durchsuchen
Ansicht
Themen-Optionen

Kurvenglättung / Interpolation / Extrapolation berechnen?

Ein Thema von moelski · begonnen am 8. Mai 2007 · letzter Beitrag vom 8. Mai 2007
 
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Kurvenglättung / Interpolation / Extrapolation berechnen

  Alt 8. Mai 2007, 07:04
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz