Duffing振動子のモデルパラメータを最小二乗法で実験的に同定してみる

この記事はあんまり意味のないものですが,自分の研究アーカイブ用に残して置きます.
非線形振動子の一つであるDuffing振動子のパラメータを実験的に推定するために,これまで遺伝的アルゴリズムやダウンヒルシンプレックスなどの最適化手法を用いていましたが,今回は最小二乗法でパパッと簡単に同定します.
ちなみに実験値にはヒト脳波(N=4)を計測したものを使いました.

下の絵のような感じです.

脳波データは,「1分間安静+2分間集中(100マス計算)+1分間安静」を行った際の実験結果です.
後頭部のO1という箇所の脳波を取得しました.
実験自体は別に本質的なものではない(時系列データがほしかっただけ)なので,具体的記述は避けます.

その生実験データに対して1秒間の解析ウインドウ毎に「FFT+peak周波数取得+パラメータ同定」を行います.
時間周波数解析ですね.
(参考;「時間周波数分析とは!?」)

ウインドウサイズや,モデルの構造などはとりあえず後回しで,一連の動作が上手く行われているのか,テスト的にやっています.

解析プログラムは以下です.今回はPythonで実装しました.
(解析はとりあえず回れば良い派なのでコード美学はご了承願います!)
解析する帯域は4~30 Hzです.

解析に使用した実験データや,適当にプログラムを回して得られる結果など貼って置きます.

各被験者(N=4)ごとの安静時120秒分集中時120秒分のパラメータ同定結果です.

相関をみるために,各パラメータ同士のプロットをgnuplotで行います.
テンプレート貼っておきます(自分用ですが,,,)

被験者ごとの各パラメータ(A,B,C)の相関も貼っておきます.

この相関によって,ヒト毎の集中度合いが把握できたら良いですけど,まだまだ最適化が必要です.
例えば

  • FFTで検討する帯域
  • モデルこれで良いのか
  • Running windowどうするか

などなど,
考えたら付きませんが,とりあえずは以上です.

 

追記

ちなみに,以上のデータは4~30 Hzの解析データですが,0.5~30 Hzを含んだデータも置いときます.

相関値も出しましたが,ここから特徴抽出が大変です.
個人的な見解としては,パラメタAとBの相関値が負に大きすぎて,納得がいっていないのです...笑
もっと相関が出なくなるような(←何言っているんだコイツ)パラメタ同定ができないか考え中です.

ではー!