使用scipy.interpolate.CubicSpline添加或乘以三次样条曲线

时间:2017-09-01 17:35:41

标签: scipy interpolation

我有一个想要将多个光谱(x,y)与加法和乘法相结合的函数。对于每个光谱,我都有三次样条对象(scipy.interpolate.CubicSpline)。当我尝试运行我的函数时,我收到此错误:

  • TypeError:不支持的操作数类型 - :'int'和'CubicSpline'

我搜索了这个网站并谷歌搜索了如何操作类型立方样条线(试图使用:

  • tck = scipy.interpolate.splrep()
  • Function = scipy.interpolate.PPoly.from_spline(tck)

...但我无法理解如何处理和操作这些对象以用于数学运算。)我不能只添加没有样条曲线的原始光谱,因为它们并不都共享共同的'x'值

我可以绘制它们并将它们分开集成,那么我需要使用哪种形式来使用简单的数学运算符(乘以两个样条曲线,添加样条曲线)?

1 个答案:

答案 0 :(得分:1)

正如Mark Mikofski所写,返回SciPy的插值例程的对象无法添加,或者乘以标量等。在对样条进行求值后,可以组合它们的。相同的网格。

from scipy.interpolate import CubicSpline
xdata1 = np.array([-1, 0, 1, 3, 5])
ydata1 = np.array([8, 5, 4, 2, 1])
cs1 = CubicSpline(xdata1, ydata1)   # first spline

xdata2 = np.array([-2, 0.5, 1.2, 3, 4])
ydata2 = np.array([4, 5, 7, 8, 7])
cs2 = CubicSpline(xdata2, ydata2)   # second spline

x = np.linspace(max(xdata1.min(), xdata2.min()), min(xdata1.max(), xdata2.max()), 100)
y_sum = cs1(x) + cs2(x) 
plt.plot(x, y_sum)

定义x的稍微繁琐的方法是确保x的范围适合样条曲线的定义区间。