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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用scipy.interpolate.CubicSpline添加或乘以三次样条曲线相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

答案

正如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的范围适合样条间的定义区间。

以上是关于使用scipy.interpolate.CubicSpline添加或乘以三次样条曲线的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)