2015-11-19 111 views
1

正如在地球科学中经常发生的那样,我有一个时间序列的位置(lon,lat)。时间序列的时间不均匀。时间采样的样子:在时间上均匀地重新采样时间序列

t_diff_every_position = [3.99, 1.00, 3.00, 4.00, 3.98, 3.99, ... ] 

而且我有相关的每T位置:

lat = [77.0591, 77.0547, 77.0537, 74.6766, 74.6693, 74.6725, ... ] 
    lon = [-135.2876, -135.2825, -135.2776, -143.7432, -143.7994, 
    -143.8582, ... ] 

我要重新采样的位置有一个数据集的时间间隔均匀。所以我想要的时间向量看起来像:

t_resampled = [4.00, 4.00, 4.00, 4.00, 4.00, 4.00, ... ] 

并具有插值相关的位置。

该位置不遵循单调函数,所以我不能使用scipy通常的重新采样和插值函数。 Positions with time

有没有人有关于如何实现这个想法?

+1

您可以使用scipy常用的插值函数。一种方法是以通常的方式将累积时间分别插入经度和纬度,以便有两个插值函数。 – jme

+0

非常好的主意!我没有想到这一点。为什么张贴它作为评论而不是答案? – Mathilde

+0

我当然可以做到这一点。如果你能够在某处存储大量的数据,我可以在我的答案中使用它。否则,我会看到模拟一些数据。 – jme

回答

1

一种方法是分别插入经度和纬度。这里有一些模拟数据的例子。

假设我们有100个经度(lon),纬度(lat)和时间戳(t)。时间不规律:

>>> t 
array([ 0.  , 1.09511126, 1.99576514, 2.65742629, 3.35929893, 
     4.1379694 , 5.55703942, 6.52892196, 7.64924527, 8.60496239]) 

以及由这些坐标绘制的路径看起来像:

enter image description here

我们使用SciPy的的interp1d线性插值纬度和单独经度:

from scipy.interpolate import interp1d 
f_lon = interp1d(t, lon) 
f_lat = interp1d(t, lat) 

然后我们制定一个定期时间戳数组[1, 2, 3, ..., 100],并重新取样我们的纬度S和经度:

reg_t = np.arange(0, 99) 
reg_lon = f_lon(reg_t) 
reg_lat = f_lat(reg_t) 

下图显示了插在固定时间间隔np.arange(0, 99, 5)结果。这是一个比你想要的粗糙的间隔,因为如果使用更精细的间隔,很难看到每个图中都有两个函数。

enter image description here

+0

完美,谢谢。 – Mathilde

相关问题