需求描述:
有一段ODE(Ordinary Differential Equations)模拟得的时序数据。该串数据为有两个维度,一个是时间,另一个是位置信息(x,y)以复数(x+iy)形式来展现。需要计算出不同时间所走过的路程(不是位移!!!!)。
由于没有搜索到相关的算法,必须要自己写一个来计算不同时间点相对初始时刻走过的路程,以及速度。
具体算法:
路程:
计算路程可以直接借助对两点之间的距离进行求和:
N为第N个时刻,为该时刻的位置。该方法当且仅当模拟的时间步长足够短。
检测时间步长是否足够:可以将路程S对于时间t的关系画出来,一般来说如果时间步长太长则路程的变化不会是连续的会有阶跃
实现代码如下:
function [S,v]=path(t,u) %input: time & positions; output: path & velocity
S=sum(abs(diff(u))); %This is the path in different time
v=S./(t(2:end)-t(1)); This is the velocities in different time, in this part we take the velocities as a constant in a time stepend