我正在研究一个计算速度导数和加速度积分的项目。 我的问题是我有很多加速点和速度随着时间的推移而无法找到合适的程序。
示例:
所以dv / dt =(v2-v1)/(t2-t1)但我不知道如何为v1 v2 t1 t2声明多个变量
function a=acc(v1,v2,t1,t2)
a= (v2-v1)/(t2-t1)
endfunction
v1=
v2=
t1=
t2=
disp(acc(v1,v2,t1,t2),'acc = ')
和(dv / dt)* dt
的积分相同请帮帮我们
答案 0 :(得分:0)
V(1:5) = linspace(0,40,5);
V(6:10) = 40;
V(11:17) = linspace(40,20,7);
Acc = diff(V);
首先,我们使用您的速度值填充数组V
。
然后我们使用Acc
创建一个数组diff
,加速度为a秒,因为两个V值之间只有1。
另一种基于你所写内容的解决方案
function a=acc_2(v1,v2,t1,t2)
a= (v2-v1)./(t2-t1) // since v,t are vectors, we need './' and not '/' !
endfunction
V(1:5) = linspace(0,40,5);
V(6:10) = 40;
V(11:17) = linspace(40,20,7);
v1 = V(1:$-1);
v2 = V(2:$);
t1 = 1:length(V)-1;
t2 = 2:length(V);
Acc_2 = acc_2(v1,v2,t1,t2)
如果您想h(x) = int_t0^x dv/dt dt
,请使用cumsum
H = cumsum(Acc)
答案 1 :(得分:0)
我把这段代码
V(1:5) = linspace(0,40,5);
V(6:10) = 40;
V(11:17) = linspace(40,20,7);
function a = acc(V)
a=diff(V)
endfunction
function aa = acc_2(v1,v2,t1,t2)
aa = (v2-v1)/(t2-t1)
endfunction
v1 = V(1:$-1);
v2 = V(2:$);
t1 = 1:length(V)-1;
t2 = 2:length(V);
Acc_2 = acc_2(v1,v2,t1,t2)
但是他给了我一个Acc_2变量的结果?