前提・実現したいこと
python3(開発環境はpycharm)で既存の時系列データをsin波を用いて展開・関数化したい。
発生している問題・エラーメッセージ
File "C:/Users/Owner/PycharmProjects/untitled2/test2.py", line 11 PHI = np.array([phi(x) for x in X]) ^ SyntaxError: invalid syntax
該当のソースコード
import numpy as np import matplotlib.pyplot as plt # データの記述 X = np,array([0.05, 0.87, 0.94, 0.92, 0.54, -0.11, -0.78, -0.79, -0.89, -0.04]) T = np,array([0.02, 0.12, 0.19, 0.27, 0.42, 0.51, 0.64, 0.84, 0.88, 0.99]) # 関数φにsin(xθ)とする基底関数を用いた場合 # 定数項を表すためのXの初期値を加えて10次元のベクトルを返す # フーリエ(sin(xθ)+定数項 1地点の計10地点(次元)を返す def phi(x): return np.append(X[0], np.sin(x*(np.arange(1,11,1))) PHI = np.array([phi(x) for x in X]) # 基底関数の各係数を求める w = np.linalg.solve(np.dot(PHI.T, PHI), np.dot(PHI.T, X)) # 完成した関数のplot xlist = np.arange(0, max(T),1000/60 ) ylist = [np.dot(w, phi(x)) for t in xlist] # 比較するデータのplot plt.plot(xlist, ylist) plt.plot(T, X, 'o') plt.show()
試したこと
ネット上にガウス基底関数展開で同じような事している方がいて、そちらを参考にしています。
URL:
https://qiita.com/ysdyt/items/05a884354741bd9ca82b
が、途中の式を変更したところうまくいかず困っています。わかる方教えて頂けたら幸いです。
補足情報(FW/ツールのバージョンなど)
参考にしたソースコードとはXとtの値が逆転しています。混乱させてしまったら申し訳ございません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/10 05:00