非均匀一维信号降采样

3 投票
1 回答
1288 浏览
提问于 2025-04-18 18:28

我有两个一维的numpy数组:xy,其中x存储了样本y在x轴上的位置。假设x的范围是从minXmaxX,我想在这个范围内以固定的间隔对这两个数组进行取样,比如说用np.linspace(minX, maxX, 1000)来生成1000个点。

我该如何在numpy中做到这一点呢?我是否可以用一维插值的方法来解决这个问题?

1 个回答

4

np.interp 是一个用来进行一维线性插值的工具:

newx = np.linspace(minX, maxX, 1000)
newy = np.interp(newx, x, y)

另外,使用 scipy.interpolate.interp1d,你可以用样条插值来进行插值。比如,kind='cubic' 就是用三次样条插值:

import scipy.interpolate as interpolate
newx = np.linspace(minX, maxX, 1000)
newy = interpolate.interp1d(x, y, kind='cubic')(newx)

撰写回答