相関
似ている
フーリエ係数は似ている度合 フーリエ係数が大きい=似ている
一般的な 二つの関数の似ている度合を で判定する
ところが、、、、 であった。 この二つは、“まったく似ていない” という判定になってしまう
と は同じもの
片方の関数をずらして、 判定する必要がある
相互相関係数 相互相関係数は、定数ではなく、ずらす量τの関数となる。 実際は、無限大まで考えるのは難しいので として、Tをなるべく大きくとる。
Excelで計算する場合 fiはf(t)のi番目のデータ giはg(t+τ)のi番目のデータ Rを関数fとgの相互相関係数という
Excelでの計算 と の相互相関係数
相互相関係数は、平均で出せる
τをいろいろ変えて、相互相関係数を見てみる
相互相関係数を 時間の関数としてみてみる
実際の信号の解析 信号が式で表せない、ノイズ入り信号の場合は、難しい これの相互相関係数を求めたい
表をずらして計算 これは かなり大変
自己相関係数 自分のコピーを作り、それをずらして相関係数を調べる
マクロの利用
VBA Visual Basic というプログラミング言語でプログラムを書く
VBA Dim f(1000) Dim g(1000) Dim t(1000) 'Nはでデータ数 Sub sougosoukan() Dim f(1000) Dim g(1000) Dim t(1000) 'Nはでデータ数 N = Cells(2, 1).End(xlDown).Row - 1 Cells(1, 5) = "データ数" Cells(2, 5) = N 'データ読み込み For i = 1 To N t(i) = Cells(i + 1, 1) f(i) = Cells(i + 1, 2) g(i) = Cells(i + 1, 3) Next i Cells(1, 6) = "τ" Cells(1, 7) = "相互相関係数" For j = 0 To N - 1 Cells(2 + j, 6) = t(j + 1) - t(1) s = 0 For k = 1 To N - j y = f(k) * g(k + j) s = s + y Next k soukan = s / (N - j) Cells(2 + j, 7) = soukan Next j End Sub Sub jikosoukan() Dim f(1000) Dim t(1000) 'Nはでデータ数 N = Cells(2, 1).End(xlDown).Row - 1 Cells(1, 4) = "データ数" Cells(2, 4) = N 'データ読み込み For i = 1 To N t(i) = Cells(i + 1, 1) f(i) = Cells(i + 1, 2) Next i Cells(1, 5) = "τ" Cells(1, 6) = "自己相関係数" For j = 0 To N - 1 Cells(2 + j, 5) = t(j + 1) - t(1) s = 0 For k = 1 To N - j y = f(k) * f(k + j) s = s + y Next k soukan = s / (N - j) Cells(2 + j, 6) = soukan Next j End Sub
使い方(自己相関係数)
マクロの実行
結果 3秒、6秒、9秒 ずらすとよく重なる →周期3秒
使い方(相互相関係数)
マクロの実行
結果 2.25秒ずらすと よく重なる