0

私は SciPy を学んでおり、適切な関数を見つければ簡単に解決できるはずの問題があります。10 周期をカバーする一連の点 (2D) があります。次の期間の値を予測したい。

ポイントに対応する周期関数を作成してから、このモデルでポイントを取得する必要があると思いますが、その方法がわかりません!

私たちを手伝ってくれますか ?

前もって感謝します

4

1 に答える 1

1

外挿は決して簡単ではありません。データについていくつかの強い仮定がある場合を除いて、ほとんどの場合、それは貧弱です。

あなたの場合、あなたはそれを試すことができますが、私はすぐに利用できるものがあるとは思いません。

私は試してみます:

  • 自己相関の最初の最大値を決定します
  • この値の倍数で信号をシフトして信号を拡張します

必要に応じて、後で補間を行います。

例:

import numpy as np
import matplotlib.pyplot as plt

def autocorr(x):
    result = np.correlate(x, x, mode='full')
    return result[result.size/2:]

data = np.sin(np.linspace(0,30,300)) + np.random.random((300)) * 0.1

plt.subplot(3,1,1)
#plt.plot(data,"b-")
plt.plot(data,"bx")

acorr = autocorr(data)
acorr_diff = np.diff(acorr)

maxima = [i+1 for i in range(acorr_diff.shape[0]-1) 
          if acorr_diff[i]>=0 and acorr_diff[i+1]<0]


plt.subplot(3,1,2)
plt.plot(acorr)
for m in maxima:
    plt.axvline(m, color="b", alpha=0.5)

first_max = maxima[0]
new_data = np.hstack([data[:4*first_max],data])

plt.subplot(3,1,3)
plt.plot(data)
#plt.plot(data,"b-", alpha=0.1)
plt.plot(data,"bx")
plt.plot(new_data,"r-")
#plt.plot(new_data,"rx")

plt.show()

出力

これは非常に基本的な実装にすぎません。確かに制限はありますが、原則は明確でなければなりません。

于 2013-02-11T08:05:45.323 に答える