2016-04-28 18 views
1

データポイントを指定して速度と加速度を計算しプロットしようとしています。当初、時間と高度には13ポイントが与えられています。時間と高度からの速度と加速度

time = [0:12]; 
altitude = [0,107.37,210.00,307.63,400.00,484.60,550.00,583.97,580.00,... 
     549.53,570.00,699.18,850]; 

これらは、私はきちんとしかし、速度と加速度を見つけることが方法がわからないよコード

newTime = linspace(0,12,100); 
rcubic = polyfit(time,altitude,3); 
vrcubic = polyval(rcubic,newTime); 
plot(newTime,vrcubic) 

の下に使用して行われ、フィット立方なければなりませんでした。私は現在、2地点間の速度の勾配であることを意味し

acceleration = [sqrt(velocity.^2 + newTime.^2)]; 

を使用して

velocity = [vrcubic./newTime]; 

とラフな加速を使用して、速度を見つけていますが、私はその間違った

がする簡単な方法があると思いおそらく微分か何かで速度と加速度を計算しますか?

答えて

0

通常、速度と加速度を計算するために微分を使用します。たぶんそれは簡単ではない/より効率的な方法ですが、それは私がそれが正しいと思った方法です。

v_geral(1)=0; 

for i=1:length(x)-1 

x1 = x(i); 
x2 = x(i+1); 
y1 = y(i); 
y2 = y(i+1); 
z1 = z(i); 
z2 = z(i+1); 

if sqrt((x2-x1)^2+(y2-y1)^2+(z2-z1)^2) == 0 
    v_geral(i+1)=0; 
else 
    v_geral(i+1)= sqrt((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)/(t(i+1) - t(i)); 
end 

end 

あなたにも、加速を計算し、同じ機能を使用することができます。入力を変更するだけです

1

あなたの速度は、時間に対する変位(あなたの場合の高度)の変化率です。したがって、数値近似は高度の離散的変化を離散的時間変化で割ったものです。あなたの方程式

velocity = [vrcubic./newTime]; 

doesntの」変更ためのアカウント。私はそれを変えるだろう

velocity = diff(vrcubic)./diff(newTime); 

加速はそれのちょうど時間微分です。 diffがベクトルのサイズを1つ減らすので、最初の点を削除する必要があることに注意してください。

acceleration = diff(velocity)./diff(newTime(2:end)); 
関連する問題