Daten (numerisch) integrieren in C

OP #1787041
Lesenswert?

Hallo
ich habe Datenblöcke zu 1024 Messwerten aus einer 
Beschleunigungsmessung. Jetzt brauche dazu die Auslenkung, also den Weg. 
Das kann man durch zweimaliges integrieren der Messwerte erhalten. Aber 
ich hab keinen Plan wie so ein Programm in C aussieht. Grundsätzlich 
müsste das doch in Richtung Tiefpass gehen ode liege ich da falsch ?

Gerhard
#1787064
Lesenswert?

Könnte das nicht so gehen (Pseudocode):

define DeltaT Zeitwert // Konstante: Zeit zwischen zwei Messwerten
var Beschleunigung, Geschwindigkeit, Weg;
Weg = 0;

Iteriere über alle Messwerte der Beschleunigung
Lese aktuelle Beschleunigung;
Geschwindigkeit = Betrag von(Beschleunigung * DeltaT);
Weg = Weg + Geschwindigkeit * DeltaT;
Iteration Ende

(Wenn man jetzt z.B. von einem Auto ausgeht, das sowohl bei positiver 
als auch bei negativer Beschleunigung einen Vorwärtsgang eingelegt hat)
OP #1787076
Lesenswert?

Hallo
danke erst mal für die Posts.
Zur Präzisierung: Ich brauche nicht die Fläche unter der Kurve und auch 
nicht den gesamten Weg. Das Signal ist sinus-ähnlich, aber nicht 
wirklich periodisch. Wenn man das 1* integriert, muss wieder eine Kurve 
herauskommen, ebenso beim 2. integrieren.

Gerhard
#1787085
Lesenswert?

Dann vielleicht so?

Iteriere über alle Messwerte der Beschleunigung
Lese aktuelle Beschleunigung;
Geschwindigkeit = Beschleunigung * DeltaT;
Auslenkung = Auslenkung + Geschwindigkeit * DeltaT;
Iteration Ende

Wenn die Beschleunigung positiv wie negativ sein kann, und hiernach auch 
die Geschwindigkeit, so kann auch die Auslenkung zu- wie abnehmen.
#1787141
Lesenswert?

Gerhard G. schrieb:
> Hallo Mark
>
> stimmt eigentlich. Hab mal wieder zu kompliziert gedacht. Müsste
> eigentlich so funktionieren. Und ich krieg für jeden Term wieder einen
> Punkt meiner Geschwindigkeitskurve bzw Wegkurve.

Bedenke aber auch, das das Ergebnis nicht wirklich berauschend sein 
wird.

Es ist ein Trugschluss zu denken, dass eine Wegmessung ganz leicht 
realisierbar ist nach dem Muster

  man nehme einen Beschleunigungssensor und integriere 2-mal

In der Praxis funktioniert das nur sehr schlecht. Die Ergebnisse sind, 
gelinde gesagt, mies bis unbrauchbar.
Grund: du integrierst auch das unvermeindliche Rauschen mit auf. Und 
durch das 2-malige Integrieren verstärkst du das Rauschen extrem, bis es 
dir die Ergebnisse unbrauchbar macht.

In der Theorie: Super Ansatz
In der Praxis: wenn du keine Präzissionsinstrumente hast - unbrauchbar
OP #1787176
Lesenswert?

Hallo Karl heinz Buchegger

was wäre eine Alternative ? Wie machen "Profi-Programme" so etwas ?

Beim Differenzieren fallen Konstante raus, solche, falls vorhanden 
können also beim Integrieren auch nicht restauriert werden. Gegen das 
Rauschen könnte man ja filtern (Mittelwert über 3 Werte oä) oder was 
gibts sonst noch ?
Ich brauche nicht die Gesamtheit des Wegs. Die Beschleunigungswerte 
erwarte ich irgendwo konstant, dazu will ich die Auslenkung haben, die 
müsste also auch irgendwo konstant sein - als Maximal-Wert.


Gerhard
#1787246
Lesenswert?

Gerhard G. schrieb:
> Hallo Karl heinz Buchegger
>
> was wäre eine Alternative ? Wie machen "Profi-Programme" so etwas ?

Die benutzen zuallererst einmal eine Inertialplatform, auf der die 
Bewegungssensoren installiert sind.
Bzw. eine Kombination aus Gyros und Beschleunigungssensoren um sich 
rechnerisch eine Inertialplatform zu schaffen, die als Referenzsystem 
absolut stabil im Raum steht.

Aber ich will dich nicht aufhalten. Probiers aus.
Für kurzzeitige Messungen mags trotzdem immer noch gehen. Du sollst nur 
im Hinterkopf halten, dass du in der Kette

   Eingabe - Verarbeitung - Ausgabe

den Fehler nicht notwendigerweise im Schritt Verabreitung zu suchen 
hast, wenn hinten nichts Vernünftiges rauskommt.
Gast #1787745
Lesenswert?

Gerhard G. schrieb:
> Wie machen "Profi-Programme" so etwas ?

Zu aller erst muss man möglichst genau messen bzw. genau genug und 
richtig. Ein Profi-Programm macht das genauso gut/schlecht wie ein 
Nicht-Profi-Programm (was auch immer Profi-Programme sind...). Ein 
Ansatz ist sicher zuerst einen gleitenden Mittelwert bilden und dann zu 
Integrieren. Jedenfalls kenne ich es so von Erschütterungsmessungen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren