mikrocontroller.net

Forum: Projekte & Code Kontinuierlicher Zugriff auf diskrete Messwerte


Autor: Kai G. (runtimeterror)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.