似乎 scipy.signal.resample()在下采样到偶数点时会出错。例如,如果我们将一个函数上采样到多个原始点然后再次下采样,我们应该返回原始函数。
from scipy import signal
import numpy as np
def test_resample(n1,n2): # upsample from n1 to n2 points and back
x1=np.arange(n1)
y1=np.sin(x1)
y2,x2=signal.resample(y1,n2,x1)
y3,x3=signal.resample(y2,n1,x2)
print np.allclose(y1,y3)
但是当点数较低时,这会失败:
test_resample(10,20)
False
test_resample(11,22)
True
test_resample(11,33)
True
问题出现在下采样步骤中。错误很大,我测试的功能至少有几个百分点。
4/8/17更新:这似乎是一个编码错误。我报告了错误here的详细信息。