是否有可能根据De Boor在Python中的方法找到平滑样条?用于数据近似。
之前我在matlab中使用了Smoothing spline,我需要在python中使用完全相同的算法。
答案 0 :(得分:2)
您可能想要使用scipy.interpolate.CubicSpline。以下示例直接取自文档:
在此示例中,三次样条用于插值采样的正弦曲线。可以看出,样条连续性属性适用于一阶和二阶导数,并且仅违反三阶导数。还有另一个例子;不确定你到底需要什么。
这是产生图形所需的代码:
from scipy.interpolate import CubicSpline
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
y = np.sin(x)
cs = CubicSpline(x, y)
xs = np.arange(-0.5, 9.6, 0.1)
plt.figure(figsize=(6.5, 4))
plt.plot(x, y, 'o', label='data')
plt.plot(xs, np.sin(xs), label='true')
plt.plot(xs, cs(xs), label="S")
plt.plot(xs, cs(xs, 1), label="S'")
plt.plot(xs, cs(xs, 2), label="S''")
plt.plot(xs, cs(xs, 3), label="S'''")
plt.xlim(-0.5, 9.5)
plt.legend(loc='lower left', ncol=2)
plt.show()
您还可以查看scipy.interpolate.splrep和scipy.interpolate.InterpolatedUnivariateSpline。此外,还有github repository可能有所帮助。您可以将这些方法与您使用的Matlab函数进行比较,并选择合适的方法。