阅读量:3
在SciPy中,可以使用scipy.interpolate
模块中的UnivariateSpline
类来进行样条曲线拟合,使用scipy.interpolate
模块中的RectBivariateSpline
类来进行曲面拟合。
下面是一个使用UnivariateSpline
类进行样条曲线拟合的示例:
import numpy as np from scipy.interpolate import UnivariateSpline import matplotlib.pyplot as plt # 生成一些随机数据 x = np.linspace(0, 10, 50) y = np.sin(x) + np.random.normal(0, 0.1, 50) # 使用UnivariateSpline进行样条曲线拟合 spline = UnivariateSpline(x, y) # 绘制原始数据和拟合曲线 plt.scatter(x, y, color='red', label='Original data') plt.plot(x, spline(x), color='blue', label='Spline fit') plt.legend() plt.show()
下面是一个使用RectBivariateSpline
类进行曲面拟合的示例:
import numpy as np from scipy.interpolate import RectBivariateSpline import matplotlib.pyplot as plt # 生成一些随机数据 x = np.linspace(0, 10, 50) y = np.linspace(0, 10, 50) X, Y = np.meshgrid(x, y) Z = np.sin(X) * np.cos(Y) + np.random.normal(0, 0.1, (50, 50)) # 使用RectBivariateSpline进行曲面拟合 spline = RectBivariateSpline(x, y, Z) # 绘制原始数据和拟合曲面 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(X, Y, Z, color='red', label='Original data') X_new, Y_new = np.meshgrid(np.linspace(0, 10, 100), np.linspace(0, 10, 100)) Z_new = spline(X_new, Y_new) ax.plot_surface(X_new, Y_new, Z_new, color='blue', label='Surface fit') plt.legend() plt.show()
通过以上示例,您可以使用SciPy中的样条曲线和曲面拟合功能进行数据拟合。