【发布时间】:2021-01-05 17:42:53
【问题描述】:
这是我的情节:
现有曲线是使用interp1d 获得的函数,我也有原始数据。
如何使用 SciPy 推断得到 71.5 的曲线并插值得到 44.3 的曲线?
【问题讨论】:
标签: python scipy interpolation extrapolation
这是我的情节:
现有曲线是使用interp1d 获得的函数,我也有原始数据。
如何使用 SciPy 推断得到 71.5 的曲线并插值得到 44.3 的曲线?
【问题讨论】:
标签: python scipy interpolation extrapolation
您可以根据值差异在两条最接近的曲线之间插入权重。权重之和应为 1。对于外推,最远的曲线将具有负权重。
代码假设每条曲线的 x 和 y 值数量相同。
import matplotlib.pyplot as plt
import numpy as np
c30 = np.array([[29.58, 10992.90], [34.06, 10488.35], [36.53, 10166.76], [38.92, 9836.60], [41.99, 9298.52], [45.13, 8708.54], [47.68, 8153.57], [49.34, 7768.64], [50.30, 7546.69]])
c45 = np.array([[26.79, 10598.67], [28.89, 10282.69], [30.99, 9962.94], [33.09, 9622.18], [35.18, 9220.9], [37.28, 8773.75], [39.38, 8311.88], [41.48, 7836.1], [43.58, 7344.26]])
c60 = np.array([[24.44, 9518.93], [25.81, 9231.69], [27.17, 8919.78], [28.54, 8576.69], [29.9, 8213.69], [31.27, 7841.51], [32.64, 7437.91], [34., 7004.48], [35.37, 6569.1]])
plt.plot(c30[:, 0], c30[:, 1], color='dodgerblue', label='30')
plt.plot(c45[:, 0], c45[:, 1], color='limegreen', label='45')
plt.plot(c60[:, 0], c60[:, 1], color='crimson', label='60')
c44_3 = ((44.3 - 30) * c45 + (45 - 44.3) * c30) / (45 - 30)
c71_5 = ((71.5 - 45) * c60 + (60 - 71.5) * c45) / (60 - 45)
plt.plot(c44_3[:, 0], c44_3[:, 1], color='orange', label='44.3')
plt.plot(c71_5[:, 0], c71_5[:, 1], color='purple', label='71.5')
plt.legend()
plt.show()
【讨论】: