元高専生のロボット作り

元高専生のロボット作り

主にプログラミング, 電子系について書きます。たまに機械系もやります。メモ代わりの記事ばっか書きます

Excelで2つの時系列データの位相を推定する

Excelで2つの時系列データの位相と周期を求めます。
位相はこちらから指定してやり、計算から指定した位相を求められるかというのを試します。

こんな感じのことをやります。
f:id:sgrsn1711:20210610152333p:plain

以下にExcelデータ置いときます。
https://docs.google.com/spreadsheets/d/e/2PACX-1vQKYRR9fKz5s8oWPWFO0jw8JrfoK3Aej_kXkqlB6FtjwwOtDlL5uH8BFwOYJGNlf5-O68wyW0_mdMEv/pub?output=xlsx



まずは、時間tを0.1秒ステップで10秒くらいまで連続データで作って、
さらに位相Φを適当に指定しておきます。

肝心のデータ2つをf(t)、g(t)として以下のように用意します。
f(t) = sin(t + RAND()*N)
g(t) = sin(t + RAND()*N - Φ)

ここでtは時間、Φは位相、RAND()は0~1までの値をランダムで返します。

データが用意できたので畳み込み積分によって位相を求めます。
畳み込み積分をF(τ)とすると、
F(τ) = ∫f(t)g(τ-t)dt
だったような気がします。

Excelでは畳み込み積分は簡単に行えます。
具体的には、f(t)のセルの範囲がB4からB104、
g(t)のセルの範囲がC4からC104だとして、

Dの列に畳み込み積分を書くならば
D4に、
=SUM(B$4:B$104*C4:C104)
と入力し、Ctrl+SHift+Enterでτ=0の畳み込み積分ができます。
あとはD4からD104まで連続データとしてやれば
τ=0~10までのステップ0.1の畳み込み積分データが取得できます。

この畳み込み積分の最大値の時のτが位相です。(詳しくは後述)

さらに畳み込み積分2波目の最大値はτ=Φ+Tの時のものなので、周期も求めることができます。