Thursday 12 January 2017

Moving Average Filter Beschleunigungssensor

Ein einfaches, einpoliges, flaches, rekursives IIR-Filter ist schnell und einfach zu implementieren, z. B. Wobei x, y die rohen (ungefilterten) XY-Beschleunigungssensoren sind, xf, yf die gefilterten Ausgangssignale sind und k die Zeitkonstante der Filter bestimmt (typischerweise ein Wert zwischen 0,9 und 0,9999, wobei ein größeres k eine längere Zeitkonstante bedeutet ). Sie können k empirisch bestimmen, oder wenn Sie die gewünschte Grenzfrequenz Fc kennen. Dann können Sie die Formel verwenden: wobei Fs die Abtastrate ist. Man beachte, daß xf, yf die vorherigen Werte des Ausgangssignals auf der RHS und die neuen Ausgangswerte auf der LHS des obigen Ausdrucks sind. Beachten Sie auch, dass wir hier davon ausgehen, dass Sie die Beschleunigungsmessersignale in regelmäßigen Zeitabständen abtasten, z. B. Alle 10 ms. Die Zeitkonstante ist eine Funktion sowohl von k als auch von diesem Abtastintervall. Filter für Filterung Dieses Beispiel zeigt den empfohlenen Arbeitsablauf zum Generieren von C-Code aus einer MATLAB-Funktion unter Verwendung des Befehls codegen. Dies sind die folgenden Schritte: 1. Fügen Sie die Codegen-Direktive zur MATLAB-Funktion hinzu, um anzuzeigen, dass sie für die Codegenerierung vorgesehen ist. Mit dieser Richtlinie kann der MATLAB-Codeanalysator auch Warnungen und Fehler identifizieren, die für MATLAB zur Codegenerierung spezifisch sind. 2. Generieren Sie eine MEX-Funktion, um zu überprüfen, ob der MATLAB-Code für die Codegenerierung geeignet ist. Wenn Fehler auftreten, sollten Sie sie vor dem Generieren von C-Code zu beheben. 3. Testen Sie die MEX-Funktion in MATLAB, um sicherzustellen, dass es funktional dem ursprünglichen MATLAB-Code entspricht und dass keine Laufzeitfehler auftreten. 4. Generieren Sie C-Code. 5. Überprüfen Sie den C-Code. Voraussetzungen Es gibt keine Voraussetzungen für dieses Beispiel. Erstellen eines neuen Ordners und Kopieren von relevanten Dateien Der folgende Code erstellt einen Ordner in Ihrem aktuellen Arbeitsordner (pwd). Der neue Ordner enthält nur die Dateien, die für dieses Beispiel relevant sind. Wenn Sie den aktuellen Ordner nicht beeinflussen möchten (oder wenn Sie keine Dateien in diesem Ordner erzeugen können), sollten Sie den Arbeitsordner ändern. Ausführen des Befehls: Erstellen eines neuen Ordners und Kopieren von relevanten Dateien Über die averagingfilter-Funktion Die averagingfilter. m-Funktion fungiert als Mittelungsfilter für das Eingangssignal, das einen Eingabevektor von Werten annimmt und einen Durchschnitt für jeden Wert im Vektor berechnet. Der Ausgangsvektor ist die gleiche Größe und Form wie der Eingangsvektor. Die Codegen-Kompilierungsrichtlinie zeigt an, dass der MATLAB-Code für die Codegenerierung vorgesehen ist. Erstellen Sie einige Beispieldaten Erstellen Sie eine verrauschte Sinuswelle und zeichnen Sie das Ergebnis. Generieren einer MEX-Funktion zum Testen Generieren Sie eine MEX-Funktion mit dem Befehl codegen. Der Codegen-Befehl überprüft, ob die MATLAB-Funktion für die Codegenerierung geeignet ist, und erzeugt eine MEX-Funktion, die Sie vor dem Generieren des C-Codes in MATLAB testen können. Da C eine statische Typisierung verwendet, muss codegen die Eigenschaften aller Variablen in den MATLAB-Dateien zur Kompilierzeit bestimmen. Hier liefert die Befehlszeilenoption - args eine Beispiel-Eingabe, so dass Codegen neue Typen auf der Grundlage der Eingabetypen ableiten kann. Das Beispielsignal, das oben als Beispiel-Eingang erstellt wurde, stellt sicher, dass die MEX-Funktion denselben Eingang verwenden kann. Standardmäßig generiert codegen eine MEX-Funktion namens averagingfiltermex im aktuellen Ordner. Auf diese Weise können Sie den MATLAB-Code und die MEX-Funktion testen und die Ergebnisse vergleichen. Testen der MEX-Funktion in MATLAB Ausführen der MEX-Funktion in MATLAB Generieren von C-Code Überprüfen des generierten Codes Der Codegen-Befehl mit der Option - config coder. config (lib) erzeugt C-Code, der als eigenständige C-Bibliothek verpackt ist. Der generierte C-Code befindet sich im Codegen lib averagingfilter-Ordner. Die Dateien sind: Überprüfen Sie den C-Code für die Funktion averagingfilter. c Wählen Sie Ihr Land aus


No comments:

Post a Comment