繁体   English   中英

使用 SciPy 在曲线之间进行插值

[英]Interpolating between curves using SciPy

这是我的情节:

阴谋

现有曲线是使用interp1d获得的函数,我也有原始数据。

如何使用 SciPy 外推得到 71.5 的曲线并内插得到 44.3 的曲线?

您可以根据值的差异在两条最近的曲线之间使用权重进行插值。 权重总和应为 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()

结果图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM