使用 matplotlib 进行曲线拟合

0 python numpy matplotlib scipy

我有两个一维数组shape.x=[701,]shape.y=[701,]. 这给了我如下图所示的曲线。我怎样才能使曲线适合这个?

在此处输入图片说明

Hih*_*iho 7

看一下

https://docs.scipy.org/doc/scipy-0.19.0/reference/generated/scipy.optimize.curve_fit.html

底部有一个示例,它几乎可以满足您的要求。

编辑:回复评论

import matplotlib.pyplot as plt;
import numpy as np;
import scipy.optimize as opt;

# This is the function we are trying to fit to the data.
def func(x, a, b, c):
     return a * np.exp(-b * x) + c

# Generate some data, you don't have to do this, as you already have your data
xdata = np.linspace(0, 4, 50)
y = func(xdata, 2.5, 1.3, 0.5)
y_noise = 0.2 * np.random.normal(size=xdata.size)
ydata = y + y_noise

# Plot the actual data
plt.plot(xdata, ydata, ".", label="Data");

# The actual curve fitting happens here
optimizedParameters, pcov = opt.curve_fit(func, xdata, ydata);

# Use the optimized parameters to plot the best fit
plt.plot(xdata, func(xdata, *optimizedParameters), label="fit");

# Show the graph
plt.legend();
plt.show();
Run Code Online (Sandbox Code Playgroud)

x, y 数据是 xdata 和 ydata 变量。

所以如果你想使用这段代码,只要把产生数据的那个位取出来,把你的x、y数据数组定义为“xdata”和“ydata”。

  • 这个例子对我来说相当复杂,因为我是 python 新手。如果我使用您给定示例的代码,您能告诉我应该将 x 和 y 值放在哪里吗? (2认同)