帮我用python写一个读取excle中的5列数据、插值到同一高度然后求均方根误差和绘制误差图,以函数和主函数的方式
时间: 2024-03-24 16:35:50 浏览: 95
Python求均值,方差,标准差的实例
5星 · 资源好评率100%
好的,以下是修改后的代码示例:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
def interpolate_and_rmse(x, y, z, t, u):
# 对数据进行插值,使其在同一高度上
xi = np.arange(np.ceil(np.min(z)), np.floor(np.max(z)) + 1)
yi = np.interp(xi, z, y)
ti = np.interp(xi, z, t)
ui = np.interp(xi, z, u)
# 计算均方根误差
yi_interp = np.interp(z, xi, yi)
rmse = np.sqrt(np.mean((y - yi_interp) ** 2))
# 绘制误差图
plt.plot(z, y, label='Original')
plt.plot(z, yi_interp, label='Interpolated')
plt.legend()
plt.xlabel('Height')
plt.ylabel('Value')
plt.title(f'RMSE: {rmse:.2f}')
plt.show()
def main():
# 读取excel文件中的数据
df = pd.read_excel('data.xlsx')
x = df['X'].values
y = df['Y'].values
z = df['Z'].values
t = df['T'].values
u = df['U'].values
# 对数据进行插值并绘制误差图
interpolate_and_rmse(x, y, z, t, u)
if __name__ == '__main__':
main()
```
相较于之前的代码,我们仅需要将函数 `interpolate_and_rmse` 中的参数个数和数据列数对应修改即可。其他部分的代码保持不变。
在使用该代码前仍需要先安装 `numpy`、`pandas` 和 `matplotlib` 库。
阅读全文