python对二维数据进行谐波拟合
时间: 2023-10-26 16:15:22 浏览: 45
要对二维数据进行谐波拟合,可以使用Python中的scipy库中的optimize.curve_fit()函数。该函数可以拟合任何函数,包括谐波函数。
以下是一个使用optimize.curve_fit()函数进行谐波拟合的示例代码:
```python
import numpy as np
from scipy import optimize
# 二维数据
x = np.array([0, 1, 2, 3, 4, 5])
y = np.array([0, 1, 2, 3, 4, 5])
z = np.array([
[0.0, 0.3, 0.5, 0.4, 0.2, 0.0],
[0.3, 0.6, 0.8, 0.7, 0.4, 0.1],
[0.5, 0.8, 1.0, 0.9, 0.6, 0.3],
[0.4, 0.7, 0.9, 0.8, 0.5, 0.2],
[0.2, 0.4, 0.6, 0.5, 0.3, 0.0],
[0.0, 0.1, 0.3, 0.2, 0.0, 0.0]
])
# 谐波函数
def harmonic_func(x, y, a, b, c, d, f, g):
return a * np.sin(x * f) * np.sin(y * g) + b * np.cos(x * f) * np.cos(y * g) + c * np.sin(x * f) * np.cos(y * g) + d * np.cos(x * f) * np.sin(y * g)
# 初始参数猜测
p0 = [1, 1, 1, 1, 1, 1]
# 拟合
popt, pcov = optimize.curve_fit(harmonic_func, (x, y), z, p0)
# 输出拟合结果
print(popt)
```
在上述代码中,使用了6个参数来拟合谐波函数,即a、b、c、d、f和g。这些参数的初始值可以通过p0列表来设置。optimize.curve_fit()函数返回两个值,即拟合函数的参数popt和协方差矩阵pcov。在上述代码中,我们只输出了拟合函数的参数popt。