【问题标题】:Interpolation of a Curve: In what order are coordinates considered?曲线插值:以什么顺序考虑坐标?
【发布时间】:2019-10-07 05:57:00
【问题描述】:

我试图了解插值的工作原理以及在我的曲线中插值时会导致锯齿形的原因。我是否正确假设插值按输入顺序考虑点,或者我认为可能存在更复杂的情况?

我的散点曲线输出

from scipy import interpolate
yao = np.asarray(yo[0::10])
xao = np.asarray(xo[0::10])
#plt.plot(xao, yao)
print(len(xao))
okayo = np.where(np.abs(np.diff(xao)) + np.abs(np.diff(yao)) > 0)
xpo = np.r_[xao[okayo], xao[-1]]
print(len(xpo))
ypo = np.r_[yao[okayo], yao[-1]]

tcko, uo = interpolate.splprep([xpo, ypo], s=3, k=1, per=False)
xo, yo = interpolate.splev(np.linspace(0, 1, 100), tcko)

fig = plt.figure()
ax = plt.subplot(111)
ax.plot(xao, yao, '.', markersize=2)
ax.plot(xo, yo, alpha=0.5)

与我以已知顺序输入较少点时相反

我以为我理解的是插值,但这种曲折的曲折让我很困惑。任何有助于理解的帮助都会很棒,谢谢。

【问题讨论】:

  • 按角度对数据进行排序,中心位于“质心”

标签: python scipy interpolation curve-fitting


【解决方案1】:

您的数据不可用,因此无法重现结果,但图表看起来很合理。您使用的函数很可能将您的输入视为时间序列数据,例如,如果您希望信号值从 500 反弹到 1000,则在上图中插值是正确的,当您在下图中指定顺序时,您基本上输入另一个信号其中值变化平滑,插值变化如此。

【讨论】:

  • 谢谢,将其视为时间序列让我更清楚。
猜你喜欢
  • 1970-01-01
  • 2017-11-01
  • 2020-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
相关资源
最近更新 更多