WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

2. Ableitung in Echtzeit-Anwendung

 

RienSte
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 08.09.15
Wohnort: Salzburg / Österreich
Version: ---
     Beitrag Verfasst am: 21.12.2016, 15:09     Titel: 2. Ableitung in Echtzeit-Anwendung
  Antworten mit Zitat      
Guten Tag,

ich möchte von einem gemessenen Wegsignal die zweite Ableitung in einer Echtzeitanwendung bilden.

Die erste Ableitung ist soweit kein Problem, das habe ich mit einem Savitzky-Golay FIR gelöst. Nun könnte man auch einfach so ein Filter ein zweites mal anwenden, ja.
Schöner wäre es allerdings, wenn man direkt die Koeffizienten von SG für die zweite Ableitung verwendet. Nun tritt aber folgendes Phänomen auf. Bei einem symmetrischen Signal (also zB ein (verrauschter) Sinus ohne Konstantanteil) funktioniert alles bestens. Auch das Rauschen stellt kein allzu großes Problem dar.
Wende ich das Filter allerdings auf mein in Echtzeit gemessenes Signal an (Bereich von 0 bis 200 mm), bekomme ich am Ausgang einen vom Eingangssignal abhängigen Konstantanteil (überlagert zur vermeintlich 2. Ableitung).

Wenn man sich die Koeffizienten ansieht:
Code:
COEFF_A_STROKE_F = [15 6 -1 -6 -9 -10 9 6 1 -6 -15]/429

erkennt man, dass diese nicht symmetrisch sind (die -10 in der Mitte). Ich vermute, dass dies zum Konstantanteil führt, der eigentlich in der Größenordnung -10/429*Eingangssignal liegen müsste. Leider trifft dies nicht zu.

So... nun meine Frage: was tun?
Gibt es (symmetrische) Filterkoeffizienten für die 2. Ableitung? Oder gibt es generell einen eleganteren Weg für die 2. Ableitung eines Signales?

Ich möchte nochmals darauf hinweisen, dass es sich bei mir keine Messreihe handelt, sondern ich Matlab/Simulink zur Programmierung von Echtzeit-Systemen verwende. Also das Signal muss on-the-fly verarbeitet werden.

Vielen Dank im Voraus!!!
Private Nachricht senden Benutzer-Profile anzeigen


RienSte
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 08.09.15
Wohnort: Salzburg / Österreich
Version: ---
     Beitrag Verfasst am: 22.12.2016, 13:55     Titel:
  Antworten mit Zitat      
Keine ne Idee? Confused
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.12.2016, 09:32     Titel: Re: 2. Ableitung in Echtzeit-Anwendung
  Antworten mit Zitat      
Hallo RienSte,

Nein, eine Idee habe ich nicht.

Zitat:
Wenn man sich die Koeffizienten ansieht:
Code:
COEFF_A_STROKE_F = [15 6 -1 -6 -9 -10 9 6 1 -6 -15]/429

erkennt man, dass diese nicht symmetrisch sind (die -10 in der Mitte).

Sind sie nicht doch symmterisch? Der mittlere Punkt ist doch der, der in jedem Schritt verändert wird. Deshalb kannst Du ka keine gerade Anzahl von Koeffizienten haben.

Was bedeutet "Echtzeit-Anwendung"? Hast Du nur die vorherigen Signale zur Verfügung? Der SG-Filter benötigt ja auch Signale "aus der Zukunft", oder aber der Output hängt um die halbe Filter-Breite hinterher.

Bitte erkläre noch mal genauer, vielleicht mit einem Zahlen-Beispiel?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
RienSte
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 08.09.15
Wohnort: Salzburg / Österreich
Version: ---
     Beitrag Verfasst am: 23.12.2016, 09:49     Titel:
  Antworten mit Zitat      
Echtzeit-Anwendung heißt, dass mein Simulink-Modell + MATLAB Code kompiliert und auf einer dSPACE MicroAutoBox II (und später dann auf einer Target-Hardware) dann in Echtzeit abläuft. Das heißt, dass die in echtzeit gemessenen Signale immer nur zum Zeitpunkt t zur Verfügung stehen und keine ganze Messreihe, die gefiltert werden kann.

Der FIR-Filter Block hilft sich da ab, in dem eine gewisse Anzahl an Werten zwischengespeichert (Anzahl der Koeffizienten) und gewichtet (Betrag der Koeffizienten) wird. Eine Art Schieberegister. Je nach Koeffizienten kann man vom gleitenden Mittelwertfilter bis hin zu Ableitungen alles machen.
Das Filter verhält sich bei zeitdiskreten Systemen genau so, wie du vermutest. Der Ausgangswert "läuft die halbe Fensterbreite nach". Das lässt sich leider nicht verhindern. Kann man sich im fda-tool auch recht schön ansehen.

Das Fenster selber ist natürlich symmetrisch, ja... da es eine ungerade Anzahl an Koeffizienten hat.
Aber die Gewichtung ist nicht symmetrisch (Mittelwert != 0)... daraus schließe ich, dass man immer einen Konstantanteil ins Ausgangssignal bekommt. Ist ja quasi dann eine Art gain. Anders hingegen die 1. Ableitung nach SG, die ist symmetrisch gewichtet (Koeffizienten zB [-3 -2 -1 0 1 2 3])

Ich habe mir jetzt beholfen, in dem ich nach der 1. Ableitung einfach eine zweite 1. Ableitung mit breiterem Fenster gesetzt habe. Das tut... bringt aber mehr Zeitverzug.

Trotzdem würde mich die Lösung mit dem SG-Filter für die 2. Ableitung interessieren. Die Herren S&G werden sich ja wohl was dabei gedacht haben Smile

Grüße,
Stephan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.