最近は、数式いじりが趣味みたいなこともあり、本ブログで好評をいただいている「5点の値から周波数を求める計算式」の別法を考えています。
以前から気づいていた方法が1つあり、公表しようか論文で発表しようか迷っていたのですが、ブログで発表することにしました。 今回お話する方法は、Synchro PRIMO 法が基本演算とする「リサージュ外積」に「差分項」を代入するものです。
・ 元の信号波形を X[n] とします。 X[n]= A*sin(Ωn) のような形を考えてください。
・ Y[n] = 1/2 * ( X[n+1] - X[n-1] ) と差分 Yn を作ります。
リサージュ外積を求めます。(Ls1形式を使います) 下記 Ls_y, Ls_x は、リサージュ外積の性質により、定数となります。
Ls_x = X[n]^2 - X[n+1]*X[n-1] , Ls_y = Y[n]^2 - Y[n+1]*Y[n-1]
瞬時周波数 F (相対周波数形式)は次のようにシンプルな形となります。
sin (2πF) = sqrt{ Ls_y / Ls_x )
この方法は、5点を使うだけなら、オリジナルのSynchro PRIMO法よりも、少しノイズに強い挙動を示します。しかし弱点があって、「指数減衰」する正弦波に対しては正しい値とはなりません。かたや、オリジナル Synchro PRIMO 法は PRONY法の性質を受け継いでおり、指数減衰する波形に対しても正しい周波数を示します。
指数関数形式に限定とはいえ、周波数一定のまま振幅が減衰する波形に対し、正しい周波数が計算できるのは、Synchro PRIMO 法の強みでもあります。今回説明した方法は「遅延」+「差分」を使用しています。まだ外乱・ノイズに対する挙動は調べていません。興味あるかたはシミュレーションしてみてください。
・・・ こんな形で、基本的な関数を「部品」にして、新しい方法を考えるのも面白いものです。