带周期numpy插值

x8diyxa7  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(522)

有人能给我解释一下documentation中的代码吗?
使用周期性x坐标插值:
x = [-180、-170、-185、185、-10、-5、0、365]
Xp = [190,-190,350,-350]
浮点数= [5,10,3,4]
n.插值(x,xp,fp,周期=360)
数组([7.5、5、8.75、6.25、3、3.25、3.5、3.75])
我做过这样的试验

import matplotlib.pyplot as plt
import numpy as np

x = [-180, -170, -185, 185, -10, -5, 0, 365]
xp = [190, -190, 350, -350]
fp = [5, 10, 3, 4]

y=np.interp(x, xp, fp, period=360)
print(x)
print(y)

plt.grid()
plt.plot(xp, fp)
#plt.scatter(x,y,marker="o",color="green")
plt.plot(x,y,'o')
plt.show()

它就像这样

橙子的点怎么能被认为是“插值”呢?我不明白。它们甚至不在曲线上
编辑:感谢Warren Weckesser的详细解释!一个更好地看它的情节

wribegjk

wribegjk1#

interp文档字符串中演示period用法的示例中使用的数字在绘图中可能有点难以解释。
周期为360,给定的“已知”点为

xp = [190, -190, 350, -350]
fp = [  5,   10,   3,    4]

请注意,xp中的值跨越的区间大于360。我们将区间[0,360)视为插值器的基本域。如果我们将给定点Map到基本域,则它们为:

xp1 = [190, 170, 350, 10]
fp1 = [  5,  10,   3,  4]

现在,对于周期性插值器,我们可以想象该数据在正方向和负方向上被周期性地扩展,例如

xp_ext = [..., 190-360, 170-360, 350-360, 10-360, 190, 170, 350, 10, 190+360, 170+360, 350+360, 10+360, ...]
fp_ext = [...,       5,      10,       3,      4,   5,  10,   3,  4,       5,      10,       3,      4, ...]

interp插值的正是该扩展数据。
下面的脚本将示例中的数组x替换为一个密集点集。有了这个密集点集,y = np.interp(x, xp, fp, period=360)的绘图应该会更清楚地显示出发生了什么:

xp = [190, -190, 350, -350]
fp = [5, 10, 3, 4]
x = np.linspace(-360, 720, 1200)
y = np.interp(x, xp, fp, period=360)
plt.plot(x, y, '--')
plt.plot(xp, fp, 'ko')
plt.grid(True)

图中的每个“角”都是(xp, fp)的周期性扩展版本中的一个点。

相关问题