Hallo, möchte mit meinem AVR32 (AT32UC3C) Eval Board eine berechnete Beschleunigung in Geschwindigkeit umrechnen. Habe mir bereits ein paar Integrationsmethoden durch gelesen und möchte euch nun fragen welche eurer Meinung nach die Genauste ist und in C nicht zu schwer ist um zu setzten. Wie bestimme ich die Zeitgrenzen (über Timer?) Vielen Dank für die Hilfe
Wenn möglich, sorgt man dafür, dass die Abtastintervalle alle gleich lang sind. Dann läuft die näherungsweise Integreation im einfachsten Fall auf die Aufsummierung der Messwerte hinaus. Etwas genauer, aber immer noch ziemlich einfach, ist die Trapezmethode, bei der in jedem Schritt nicht nur der letzte, sondern die zwei letzten Messewerte zur Gesamtsumme addiert werden. Um von der Summe auf die Geschwindigkeit zu kommen, muss sie noch mit dem Abtastintervall und bei der Trapezmethode zusätzlich mit 0,5 multipliziert werden. Diese Multiplikation muss nicht in jedem Schritt, sondern nur beim Auslesen des Geschwindigkeitwerts durchgeführt werden. So spart man Rechenzeit im eigentlichen Integrationszyklus. Es gibt natürlich auch noch kompliziertere Integreationsmethoden: http://de.wikipedia.org/wiki/Numerische_Integration Ob sich die zusätzlich benötigte Rechenzeit tatsächlich in einer besseren Genauigkeit des Ergebnisses niederschlägt, hängt von der Beschaffenheit der Messdaten und der Länge des Abtastintervalls ab.
bestimme ich dann die abtastintervall mit einem timer ? die einzelnen intigrationsmethoden versteh ich theoretisch und kann das auch auf dem papier rechnen. nur weiß ich nicht wie ich das in code umsetzen soll.. :(
Um die Fläche unter der Fkt. zu berechnen, benötige ich einmal den Funktionswert f(x)1 , t1 und f(x), t2 . wie bestimme ich das zeitintervall t und t2?
Starte einen Timer, der dir z.B. alle 100 ms ein Flag setzt. Wenn das Flag gesetzt wurde addierst du einfach den aktuellen Beschleunigungswert zu deiner "Summe" dazu. v(t)=v0+a*t
Sven P schrieb: > wie bestimme ich das > zeitintervall t und t2? t-t2? Tipp doch Deine letzte Frage nochmal detaillierter und etwas sauberer.
Danke Timmo hast mich schon bisschen weiter gebracht! Sorry habs im nachheinen auch gesehen, dass des bisschen schlampig geschrieben war. Bsp. Treppenstufenintegration (Nur zur Grundsatz zur Erklärung) Will man im Integral zwischen a(t1) und b(t2) das Integral (Fläche) berechnen, so teilt man diesen Zeitbereich zwischen a und b wieder in einzelne "Treppen" mit der Zeitdauer h(th) ein. Desto kleiner (kürzer) th ist, desto genauer wird mein Ergebnis. Reicht es nun pro durchlauf die Fläche zwischen th zu berechnen und dann aus zu geben?
Sven P schrieb: > Will man im Integral zwischen a(t1) und b(t2) das Integral (Fläche) > berechnen, so teilt man diesen Zeitbereich zwischen a und b wieder in > einzelne "Treppen" mit der Zeitdauer h(th) ein. Desto kleiner (kürzer) > th ist, desto genauer wird mein Ergebnis. Oder man nimmt einfach die Steigung zwischen a(t1) und b(t2) und rechnet rechnet die Fläche des Dreiecks aus. Wieso sollte man Treppen einfügen ? Du hast eh keine Zwischenwerte zwischen t1 und t2, die Treppe würdest Du also wahrscheinlich eh linear aufziehen.
Einfach aufsummieren und mit der zeitdifferenz multiplizieren (bei konstanter abtastrate). Wenn man erst mal ein paar Werte addiert hat, spielt es keine rolle mehr, ob es nun Rechtecke oder Trapeze waren. Bei 100 Messungen mit Rechteck: (x1 + x2 + ... + x99 + x100) * t Mit Trapez: (1/2 x1 + 1/2 x2 + 1/2 x2 + ... + 1/2 x98 + 1/2 x99 + 1/2 x99 + 1/2 x1000) * t = (1/2 x1 + x2 + ... + x99 + 1/2 x100) * t Beides ist nach der Anzahl dieser Messwerte identisch
OK, habs jetzt vertanden :). Werde die verschiedenen Methoden mal umsetzen und die beste dann nehmen. Vielen Dank Euch!!!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.