Testseite2: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
Zeile 69: Zeile 69:
Eine ausführliche Beschreibung mit Musterlösung finden Sie in [1, S. 11 ff.].
Eine ausführliche Beschreibung mit Musterlösung finden Sie in [1, S. 11 ff.].
</div>
</div>
=== Aufgabe 2.2: Rekursives Tiefpassfilter ===
Ein rekursives Filter kann Messwerte in Echtzeit während der Laufzeit filtern. Nutzen Sie ein Tiefpassfilter, um die Messwerte zu filtern.
# Schreiben Sie die Funktion <code>TiefpassFilter.m</code>, welches die Eingangswerte zyklisch filtert. Hierbei wird der Tiefpass berechnet.
# Testen Sie Ihre Funktion mit Ultraschallmesswerten mit statischen Zielen mit Ihrem Framework <code>zeigeZyklischUltraschallMessung.m</code> und <code>UltraschallMessung.mat</code> Aus den Aufgaben 1.3 und 1.4.
# Visualisieren Sie Messwerte und Filterergebnis in einem Plot mit Achsenbeschriftung und Legende.
# Testen Sie Ihre Funktion mit Ultraschallmesswerten mit dynamischen Zielen.
# Wählen Sie <math>\alpha</math> anhand der Messwerte und diskutieren Sie Ihre Wahl mit Prof. Schneider.
'''Arbeitsergebnisse''' in SVN: <code>TiefpassFilter.m, testeTiefpassFilter.m</code>
'''Hinweis:'''
* Die Formel für das Tiefpassfilter lautet: <math>\bar{x}_{TP}(k)=\alpha \cdot \bar{x}(k-1)+ (1-\alpha)\cdot x(k)</math> für den aktuellen Messwert <math>x(k)</math>.
* <math>\alpha</math> ist hierbei ein Filterparameter <math>0<\alpha<1</math>.
<div class="mw-collapsible mw-collapsed">
'''Demo:''' [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoTiefpassFilter/DemoTiefpassFilter.ino SVN: DemoTiefpassFilter.ino]
Eine ausführliche Beschreibung mit Musterlösung finden Sie in [1, S.&thinsp;11&thinsp;ff.19].
</div>
=== Aufgabe 2.3: Filtervergleich ===
# Vergleichen Sie die Ergebnisse des Tiefpasses mit denen des gleitenden Mittelwertfilters.
# Zeigen Sie das ungefilterte und die gefilterten Signal in MATLAB<sup>®</sup> in einem Plot vergleichend an (vgl. Abb.1).
# Beschriften Sie die Achsen und nutzen Sie eine Legende.
'''Lernzielkontrollfragen:'''
# Wurde das Signalrauschen geglättet?
# Ist das gefilterte Signal verzögert?
# Welchen Einfluss haben die Filterparameter?
# Wie verhalten sich die gefilterten Signal bei Ausreißern?
'''Arbeitsergebnisse''' in SVN: <code>testeFilterVergleich.m</code>
<div class="mw-collapsible mw-collapsed">
Eine ausführliche Beschreibung mit Musterlösung finden Sie in [1, S.&thinsp;27&thinsp;ff.].
</div>
=== Aufgabe 2.4: Nachhaltige Doku ===
Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN.
* Halten Sie die Regeln für den [[Software_Versionsverwaltung_mit_SVN|Umgang mit SVN]] ein.
* Halten Sie die [[Medium:Programmierrichtlinie.pdf|Programmierrichtlinie für C]] und die [[Medium:Programmierrichtlinien_für_Matlab.pdf|Programmierrichtlinien für MATLAB<sup>®</sup>]] ein.
* Versehen Sie jedes Programm mit einem Header ([[Header Beispiel für MATLAB]], [[Header Beispiel für C]]).
* Kommentiere Sie den Quelltext umfangreich.
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code>

Aktuelle Version vom 19. März 2025, 12:37 Uhr

Abb. 1: Vergleich rauschunterdrückender Filter

Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul I
Lehrveranstaltung: Mechatronik, Informatik Praktikum 2, 2. Semester

Inhalt

  • Einarbeitung in MATLAB®
  • Programmierung und Anwendung eines gleitenden Mittelwertfilters
  • Programmierung und Anwendung eines rekursiven Tiefpassfilters
  • Auslegung von Filterparameter
  • Anwendung der Filter auf eine Ultraschallmessung
  • Vergleich der Filter anhand technischer Kriterien


Lernziele

Nach Durchführung dieser Lektion

  • können Sie reale Messwerte speichern und via MATLAB® zyklisch visualisieren.
  • haben Sie ein gleitendes Mittelwertfilter programmiert.
  • haben Sie ein rekursives rekursiven Tiefpassfilter programmiert.
  • können Sie die Filter parametrieren.
  • haben Sie die Filter zyklisch auf Ultraschallmesswerte angewendet und das Filterverhalten analysiert.
  • können Sie eine Funktion in MATLAB® programmieren und aufrufen.

Lernzielkontrolle

  1. Wozu werden rekursive Filter benötigt?
  2. Nennen Sie die Formel für ein gl. Mittelwertfilter.
  3. Welche Parameter hat ein gl. Mittelwertfilter? Was bedeuten die Parameter?
  4. Nennen Sie die rekursive Formel für ein Tiefpassfilter.
  5. Welche Parameter hat ein Tiefpassfilter? Was bedeuten die Parameter?
  6. Vergleichen Sie die zwei rekursiven Filter. Nennen Sie Vor- und Nachteile.
  7. Wurde der Quelltext durch Header und Kommentare aufgewertet?
  8. Wurde auf magic numbers verzichtet?
  9. Wurde die Programmierrichtlinie eingehalten?

Vorbereitung

Führen Sie als Vorbereitung den MATLAB® Onramp Kurs durch.


Arbeitsergebnis in SVN: MATLAB® Kurszertifikat


Versuchsdurchführung

Aufgabe 2.1: Gleitendes Mittelwertfilter

Ein gleitendes Mittlwertfilter bildet einen Mittelwert über k Messwerte mittels FIFO.

  1. Schreiben Sie die Funktion GleitendesMittelwertFilter.m, welches die Eingangswerte zyklisch filtert. Hier bei wird der Mittelwert über die letzten k Messwerte gebildet.
  2. Testen Sie Ihre Funktion mit Ultraschallmesswerten mit statischen Zielen mit Ihrem Framework zeigeZyklischUltraschallMessung.m und UltraschallMessung.mat Aus den Aufgaben 1.3 und 1.4.
  3. Visualisieren Sie Messwerte und Filterergebnis in einem Plot mit Achsenbeschriftung und Legende.
  4. Testen Sie Ihre Funktion mit Ultraschallmesswerten mit dynamischen Zielen.
  5. Wählen Sie k anhand der Messwerte und diskutieren Sie Ihre Wahl mit Prof. Schneider.

Nützliche Befehle: plot, xlabel, ylabel, legend, persistent, isempty, isnan, function

Arbeitsergebnisse in SVN: GleitendesMittelwertFilter.m, testeGleitendesMittelwertFilter.m

Hinweise:

  • Nutzen Sie ein Array als FIFO.
  • Die Formel für das gleitende Mittelwertfilter lautet: x¯GM(k)=x(1)+x(2)++x(k)k für k Messwerte