仅按特定间隔插值图

时间:2019-01-30 13:51:31

标签: python numpy matplotlib scipy smoothing

插值会将数据过零归零

尝试沿数据沿y轴平滑弯曲的垂直图(x与y)。在整个图(y [0] -y [-1])上尝试过SciPy.interpolate的splev和splrep。在此时间间隔内,x数据为正,振荡,并多次下降为零。插值在零处为负(过冲)。这是数据示例:

e = np.array([-0.65067307, -0.61057307, -0.57057307, -0.53057307, -0.49047307,
              -0.45047307, -0.41037307, -0.37037307, -0.33037307, -0.29027307,
              -0.25027307, -0.21017307, -0.17017307, -0.13017307, -0.09007307,
              -0.05007307, -0.00997307,  0.03002693,  0.07002693,  0.11012693,
               0.15012693,  0.19022693,  0.23022693,  0.27022693,  0.31032693])

x = np.array([0.    , 0.    , 0.    , 0.    , 0.    , 0.    , 0.    , 0.    ,
              0.    , 1.1015, 3.0956, 2.2363, 2.4597, 1.8997, 1.5912, 1.6496,
              0.    , 0.    , 0.    , 0.    , 0.    , 0.    , 0.    , 0.    ,
              0.    ])

y = np.arange(e[0],e[-1],0.001)
spl = splrep(e,x)
xDat = splev(y,spl)
plt.plot(x,e,'k.',xDat,y,'r-',lw=0.5)

我需要图形平滑,但不要在零附近振荡。它应该突然消失为零。我正在考虑将平滑算法限制为非零(或至少高于某个临界值)数据的间隔。寻找关于此事的其他意见。

1 个答案:

答案 0 :(得分:0)

解决了。看看...

app.service('TestServices', taxFactory);

使用线性插值生成包含非零数据的阶跃函数。将实际数据乘以该函数并仅绘制正值即可达到目的。感谢您提供条件切片的提示...