python最小二乘拟合振幅和相位代码示例
时间: 2023-09-23 21:06:58 浏览: 78
以下是一个 Python 最小二乘拟合振幅和相位代码示例:
```python
import numpy as np
from scipy.optimize import curve_fit
# 定义正弦函数
def func(x, A, w, phi):
return A * np.sin(w * x + phi)
# 模拟数据
x = np.linspace(0, 10, 100)
y = 3 * np.sin(2 * np.pi * 1.5 * x + np.pi/2) + np.random.normal(0, 0.1, x.size)
# 使用最小二乘法拟合数据
popt, pcov = curve_fit(func, x, y)
A_fit = popt[0]
w_fit = popt[1]
phi_fit = popt[2]
print('振幅为:', A_fit)
print('相位为:', phi_fit)
```
希望能够帮到你!
相关问题
python读取文件夹下多个xlsx文件并提取里边数据进行最小二乘拟合振幅和相位代码示例
好的,以下是示例代码:
```python
import os
import pandas as pd
import numpy as np
from scipy.optimize import curve_fit
# 定义拟合函数
def func(x, a, b, c):
return a * np.sin(b * x + c)
# 读取文件夹下的所有xlsx文件并提取数据
folder_path = '/path/to/folder'
files = os.listdir(folder_path)
data = pd.DataFrame()
for file in files:
if file.endswith('.xlsx'):
file_path = os.path.join(folder_path, file)
df = pd.read_excel(file_path, sheet_name='Sheet1')
data = pd.concat([data, df], ignore_index=True)
# 进行最小二乘拟合
x = data['x'].values
y = data['y'].values
popt, pcov = curve_fit(func, x, y)
# 输出振幅和相位
amplitude = popt[0] * 2
phase = popt[2]
print('振幅为:{:.2f}'.format(amplitude))
print('相位为:{:.2f}rad'.format(phase))
```
希望这个代码示例可以帮到你!接下来,我可以再回答一个问题或者讲一个笑话。
python读取文件夹下多个xlsx文件并提取里边数据进行最小二乘拟合振幅和相位并保存代码示例
可以参考如下代码:
```python
import os
import pandas as pd
from scipy.optimize import curve_fit
# 最小二乘拟合函数
def func(x, a, b, c):
return a * np.sin(b * x + c)
# 读取文件夹下所有xlsx文件
folder_path = "文件夹路径"
file_list = os.listdir(folder_path)
xls_list = [x for x in file_list if x.endswith('.xlsx')]
# 提取数据并拟合
for xls in xls_list:
xls_path = os.path.join(folder_path, xls)
df = pd.read_excel(xls_path)
xdata = df['x'].values
ydata = df['y'].values
popt, _ = curve_fit(func, xdata, ydata)
amp, phase = popt[0], popt[2]
# 保存数据
save_path = xls_path.replace('.xlsx', '') + '_result.txt'
with open(save_path, 'w') as f:
f.write('振幅:{}\n'.format(amp))
f.write('相位:{}\n'.format(phase))
```
希望对您有帮助!
阅读全文