【问题标题】:linear interpolation in scipyscipy中的线性插值
【发布时间】:2014-01-16 04:26:03
【问题描述】:

我想在 scipy 中进行插值。我在特定时间段 t1 有 3 个坐标值。

x    44.254 44.114  44.353  44.899  45.082
y    -0.934 0.506   1.389   0.938   0.881
z    44.864 45.225  44.005  42.981  46.356

在时间 t1

t1    0  0.0005413307  0.0010949014 0.0015468832    0.0027740823

我需要找到时间 t2 的坐标。

t2    0  0.00392157  0.00784314  0.01176471  0.01568627  0.019607

我有 x、t1 和 t2 作为 numpy 数组。

x     [ [44.254 44.114  44.353  44.899  45.082] [-0.934 0.506   1.389   0.938   0.881] [44.864  45.225  44.005  42.981  46.356]]
t1    [ 0  0.0005413307  0.0010949014  0.0015468832 0.0027740823]
t2    [ 0  0.00392157  0.00784314  0.01176471  0.01568627  0.019607]

如何使用 scipy.interp1?

【问题讨论】:

    标签: python numpy scipy


    【解决方案1】:

    看起来你的xyz不必遵循一定的数学模型,所以我猜下面应该这样做。

    >>> x=np.array([44.254, 44.114,  44.353,  44.899,  45.082])
    >>> y=np.array([-0.934, 0.506,   1.389,   0.938,   0.881])
    >>> z=np.array([44.864, 45.225,  44.005,  42.981,  46.356])
    >>> t1=np.array([0,  0.0005413307,  0.0010949014, 0.0015468832,    0.0027740823])
    >>> t2=np.array([0,  0.00392157,  0.00784314,  0.01176471,  0.01568627,  0.019607])
    >>> scipy.interp(t2, t1,x)
    array([ 44.254,  45.082,  45.082,  45.082,  45.082,  45.082])
    >>> scipy.interp(t2, t1,y)
    array([-0.934,  0.881,  0.881,  0.881,  0.881,  0.881])
    >>> scipy.interp(t2, t1,z)
    array([ 44.864,  46.356,  46.356,  46.356,  46.356,  46.356])
    >>> indata=np.vstack((x,y,z))
    >>> np.apply_along_axis(lambda A: scipy.interp(t2,t1,A), 1, indata)
    array([[ 44.254,  45.082,  45.082,  45.082,  45.082,  45.082],
           [ -0.934,   0.881,   0.881,   0.881,   0.881,   0.881],
           [ 44.864,  46.356,  46.356,  46.356,  46.356,  46.356]])
    

    【讨论】:

    • 你能告诉我如何用新旧坐标随时间绘制图表吗?
    猜你喜欢
    • 2023-03-04
    • 2016-01-09
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    相关资源
    最近更新 更多