在Python中对数尺度插值

2024-10-01 09:40:33 发布

您现在位置:Python中文网/ 问答频道 /正文

要插入数据,我当前使用此函数:

def myinterp(x, y, der = 0, s = 0):
    tck = interpolate.splrep(x, y, s = sigma)
    xnew = np.arange(x[0], x[-1], (x[-1]-x[0])/x.size)
    ynew = interpolate.splev(xnew, tck, der = n)
    return xnew, ynew

xnew相当于使用dx=(x[-1]-x[0])/x.size在规则网格上重新采样{}。如何做同样的事,但要在对数尺度上重采样x?在


Tags: 数据函数sizedefnpsigmaderinterpolate
1条回答
网友
1楼 · 发布于 2024-10-01 09:40:33

你只需取对数,线性地重新取样,然后取它的指数:

xnew = np.exp(np.arange(log(x[0]), log(x[-1]), log(x[-1]/x[0])/x.size))

由于重复调用exp,结果可能相当昂贵。一种更有效但稍微更麻烦的方法是使用这样一个事实,即在对数标度下,后续元素之间存在一个常数因子:

^{pr2}$

编辑:你的问题是dx=(x[-1]-x[0])/x.size,这在我看来很奇怪,如果你想用同样的数组大小来表示相同的范围

dx=(x[-1]-x[0]) / (x.size-1)

我的回答也是如此。在

相关问题 更多 >