使用scipy.signal.resample重新采样时间

时间:2014-01-02 18:36:03

标签: python numpy scipy resampling

我有一个未等距采样的信号;需要进一步处理。我认为scipy.signal.resample可以做到,但我不明白它的行为。

信号在y中,相应的时间在x中。 重新采样预期为yy,所有相应的时间均为xx。有谁知道我做错了什么或如何实现我的需要?

此代码不起作用:xx不是时间:

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt

x = np.array([0,1,2,3,4,5,6,6.5,7,7.5,8,8.5,9])
y = np.cos(-x**2/4.0)
num=50
z=signal.resample(y, num, x, axis=0, window=None)
yy=z[0]
xx=z[1]
plt.plot(x,y)
plt.plot(xx,yy)
plt.show()

1 个答案:

答案 0 :(得分:13)

即使您提供x坐标(对应于t参数),resample也会假设采样是一致的。

考虑使用scipy.interpolate中的一个单变量插值器。

例如,这个脚本:

import numpy as np
from scipy import interpolate
import matplotlib.pyplot as plt

x = np.array([0,1,2,3,4,5,6,6.5,7,7.5,8,8.5,9])
y = np.cos(-x**2/4.0)

f = interpolate.interp1d(x, y)

num = 50
xx = np.linspace(x[0], x[-1], num)
yy = f(xx)

plt.plot(x,y, 'bo-')
plt.plot(xx,yy, 'g.-')
plt.show()

生成此图:

plot

检查interp1d的文档字符串以获取控制插值的选项,并检查其他插值类。