我有一个想要将多个光谱(x,y)与加法和乘法相结合的函数。对于每个光谱,我都有三次样条对象(scipy.interpolate.CubicSpline)。当我尝试运行我的函数时,我收到此错误:
我搜索了这个网站并谷歌搜索了如何操作类型立方样条线(试图使用:
...但我无法理解如何处理和操作这些对象以用于数学运算。)我不能只添加没有样条曲线的原始光谱,因为它们并不都共享共同的'x'值
我可以绘制它们并将它们分开集成,那么我需要使用哪种形式来使用简单的数学运算符(乘以两个样条曲线,添加样条曲线)?
答案 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的范围适合样条曲线的定义区间。