实际数据处理:两个exel数据文件,(读取函数:xlsread)5-10GNGD.xlsx第一列表示频率,第二列表示群时延;5-10GS21.xlsx第一列表示频率,第二列表示S21参数。要求:对两个数据曲线分别进行拟合处理。原始数据图形
时间: 2024-04-13 08:26:25 浏览: 98
关于matlab读取excel以及处理.pdf
你可以使用以下代码来读取两个Excel数据文件并进行拟合处理:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import pandas as pd
# 读取第一个Excel文件
df1 = pd.read_excel('5-10GNGD.xlsx')
freq1 = df1.iloc[:, 0]
delay = df1.iloc[:, 1]
# 读取第二个Excel文件
df2 = pd.read_excel('5-10GS21.xlsx')
freq2 = df2.iloc[:, 0]
s21 = df2.iloc[:, 1]
# 定义拟合函数
def func(x, a, b):
return a * np.exp(-b * x)
# 对第一个数据进行拟合
popt1, pcov1 = curve_fit(func, freq1, delay)
# 对第二个数据进行拟合
popt2, pcov2 = curve_fit(func, freq2, s21)
# 绘制原始数据图形
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.scatter(freq1, delay, label='Original Data')
plt.plot(freq1, func(freq1, *popt1), 'r-', label='Fitted Curve')
plt.xlabel('Frequency')
plt.ylabel('Delay')
plt.legend()
plt.subplot(1, 2, 2)
plt.scatter(freq2, s21, label='Original Data')
plt.plot(freq2, func(freq2, *popt2), 'r-', label='Fitted Curve')
plt.xlabel('Frequency')
plt.ylabel('S21')
plt.legend()
plt.tight_layout()
plt.show()
```
这段代码首先使用`pandas`库的`read_excel`函数读取两个Excel文件的数据,并分别提取频率和对应的参数列。然后定义了一个指数函数作为拟合函数。接着使用`scipy.optimize`库的`curve_fit`函数对数据进行拟合,得到拟合参数。最后使用`matplotlib`库绘制原始数据图形和拟合曲线。
你可以将Excel文件的路径替换成你实际的文件路径,运行这段代码即可得到原始数据图形和拟合曲线。
阅读全文