Mit Hilfe von Matlab zu integrieren Beschleunigungsmesser-Daten in Geschwindigkeit und position

Habe ich test accelerometer-Daten und müssen mit Hilfe von Matlab zu finden, Geschwindigkeit und position. Ich brauche die tatsächlichen Datenpunkte für beide Geschwindigkeit und position, obwohl, nicht nur die kumulative Fläche unter der Kurve. Ich habe die Beispieldaten, die ich benutze und in der Lage gewesen, dies zu erreichen durch umfangreiche und spezifische Vektorisierung Codierung, aber ich brauche zu finden, eine Allgemeine Methode. Ich kann nicht einfach eine Kurve passen und dann schätzen die Gegend, weil ich habe diskrete Daten und kann sich nicht leisten, irgendwelche Fehler. Diese Methode, die im wesentlichen der Berechnung der Fläche eines jeden Rechtecks ist die Genaueste Art und Weise. Ich habe meine versuche so weit unten:

%Variables

clear

DeltaTime=0.2; %10 Hz sampling rate 

Acceleration=[0, 1, 2, 4, 3, 1, 2]; %Sample random data set

TTime=(0.2:DeltaTime:1.4); 

VelocityL=zeros(size(Acceleration));

VelocityLL=zeros(size(Acceleration));

%Velocity

DeltaVelocityVect=Acceleration*DeltaTime;

VelocityV=[sum(DeltaVelocityVect(1)),sum(DeltaVelocityVect(1:2)),...
    sum(DeltaVelocityVect(1:3)), sum(DeltaVelocityVect(1:4)), sum(DeltaVelocityVect(1:5))...
    sum(DeltaVelocityVect(1:6)), sum(DeltaVelocityVect(1:7))];

%Position

DeltaPositionVect=VelocityV*DeltaTime;

PositionV=[sum(DeltaPositionVect(1)),sum(DeltaPositionVect(1:2)),...
    sum(DeltaPositionVect(1:3)), sum(DeltaPositionVect(1:4)), sum(DeltaPositionVect(1:5))...
    sum(DeltaPositionVect(1:6)), sum(DeltaPositionVect(1:7))];

Ich habe das Problem gelöst, alle von hand und grafisch dargestellt wird es sowohl auf Papier als auch auf Matlab und die oben genannten arbeiten. Die Länge der Datensätze ist variabel, obwohl, so wird es nicht funktionieren, langfristig. Ich habe versucht die Schleife um dieses problem zu lösen, da der index kann einfach verändert werden und passt sich so jeder Länge des Vektors unter Beibehaltung der Abtastrate, aber ich habe nicht in der Lage, um es an die Ausgabe der eigentlichen Daten-Punkte. Ich brauche eine Allgemeine form der oben genannten.

for index=1:length(Acceleration); 
  DeltaVelocityLoop(index)= DeltaTime*Acceleration(index);
end

for index2=1:7
  VelocityL(index2)= sum(DeltaVelocityLoop(index2));
  VelocityLL=VelocityLL+DeltaVelocityLoop(index2);
end

Dies ist mein 10 Versuch so enthält es die Wiederholung. VelocityL gibt die genau die gleiche Vektor wie DeltaVelocityLoop (ohne die vorherigen Bereiche zusammengefasst, die das Ziel). VelocityLL einfach gibt die gesamte Fläche unter der Kurve geschrieben, die Länge von Vektor Beschleunigung. Bitte lassen Sie mich wissen, wenn Sie irgendwelche Ideen, wie ich bekommen kann, um dieses Hindernis.

  • Wenn Sie die tatsächlichen Datenpunkte, die Beschleunigung allein ist nicht genug, müssen Sie 2 Konstanten der integration, beispielsweise die Anfangsposition und Anfangsgeschwindigkeit. Außerdem, Bedenken Sie, dass bei diesem System haben Sie ein kumulierter Fehler, also, wenn Sie die Integration über eine lange Zeit, erhalten Sie möglicherweise unzuverlässige Ergebnisse.
InformationsquelleAutor Lynn Robbins | 2011-02-16
Schreibe einen Kommentar