テスト加速度計データがあり、速度と位置を見つけるために Matlab を使用する必要があります。ただし、曲線の下の累積面積だけでなく、速度と位置の両方の実際のデータ ポイントが必要です。私は使用しているサンプル データを持っており、かなり長い特定のベクトル化コーディングによってこれを達成できましたが、より一般的な方法を見つける必要があります。離散データがあり、エラーを許容できないため、曲線近似を使用して面積を推定することはできません。基本的に各長方形の面積を計算するこの方法は、最も正確な方法です。これまでのところ、以下の試みがあります。
%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))];
私はこれをすべて手作業で解決し、紙とMatlabの両方でグラフ化し、上記の作品を作成しました。ただし、データセットの長さはさまざまであるため、長期的には機能しません。サンプリング レートを維持しながらベクトルの長さに合わせてインデックスを簡単に変更できるため、ループを使用してこの問題を解決しようとしましたが、実際のデータ ポイントを出力することができませんでした。上記の一般的な形式が必要です。
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
10回目なので繰り返しあります。VelocityL は、DeltaVelocityLoop とまったく同じベクトルを返します (目標である前の領域の合計なし)。VelocityLL は単純に、ベクトル Acceleration の長さで書かれた曲線の下の合計面積を返します。この障害を回避する方法について何かアイデアがあれば教えてください。