Forum: Projekte & Code Kontinuierlicher Zugriff auf diskrete Messwerte


von Kai G. (runtimeterror)


Angehängte Dateien:

Lesenswert?

Tag zusammen,

ich arbeite regelmäßig mit der Verarbeitung von Audio- und Bilddaten 
oder anderen diskreten Messwerten. Der Zugriff auf diese Daten ist meist 
recht ungelenk, wenn der verwendete Algorithmus nicht gut mit 
ganzahligen Indizes zusammenarbeitet.

Anbei findet ihr eine Wrapper-Klasse (Java), die einen kontinuierlichen 
Zugriff auf diskrete äquidistante Messwerte (Samples) ermöglicht. 
Zusätzlich kann man auf extrapolierte Werte außerhalb der gegebenen 
Messwerte zugreifen.

Aus welchen Teilen sich die dabei verwendete Ersatzfunktion 
zusammensetzt hängt von der Anzahl der gegebenen Messwerte ab:

- Bei einem einzelnen Messwert wird dieser immer als Konstante 
zurückgeliefert.

- Bei zwei gegebenen Messwerten werden die ausgelesenen Werte linear 
inter- und extrapoliert.

- Bei mehr Messwerten wird für jedes Intervall eine kubische 
Ersatzfunktion bestimmt (cubic spline). Die beiden Randintervalle werden 
durch eine quadratische Funktion interpoliert. Diese Funktionen dienen 
auch der Extrapolation.

Neben den reinen Funktionswerten ermöglicht die Wrapper-Klasse den 
Zugriff auf die Ableitungen der Ersatzfunktionen und kann damit auch 
Steigungen stetig interpolieren.

Im Anhang findet sich auch eine Testklasse, die die grundsätzliche 
Verwendung beschreibt. Die damit erzeugt Ausgabe habe ich als Screenshot 
angehängt:
- Blau: inter- und extrapolierte Originalfunktion f(x)
- Rot: erste Ableitung f'(x) (Steigung)
- Gelb: zweite Ableitung f''(x) (Krümmung)
- Grün: dritte Ableitung f'''(x)
(Die tatsächlichen Messwerte sind als kleine Spitzen dargestellt)

Ggf. füge ich noch eine Integralfunktion und eine resampling-Funktion 
hinzu.

Viel Spaß damit,
Kai

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.