PRIMO信号処理研究所 / Synchro PRIMO Lab.

周波数測定、位相差測定に関する新しい数理。
Please contact to snishie@mac.com.

リサージュ図の挙動

2015-11-04 00:43:35 | 信号処理

【リサージュ図から見る位相差】

 リサージュ図(リサジュー)は電気工学で必ず学習するものですが、 なぜか図形の形状から、おおざっぱな位相差や周波数比を説明するものはあっても、定量的に説明する記述は教科書にはありません。 多くの教科書に書かれているものとして、軌跡のX最大値 =A と、X軸を横切る切片=Bから 位相角φを sin φ = B / A ともとめるものはよく知られております。

 しかしこの方法で計算に関与するのはごく一部の値であり、もったいないですね。「軌跡全域」の値はsinφを示す何かをもっているはずです。 そこで、位相差=0のとき軌跡は直線、位相差90度のとき軌跡のえがく面積は最大・・・ではないか? ということに着目してみましょう。

以下、考え方を説明したいと思います。

 閉曲線面積の公式は、S = ∮{xy' -x'y} となっています。この公式にx(t), y(t) を適当な関数を設定し、展開すると面積Sが得られます。

 x(t) = A sin (ωt)、y(t) = B sin(ωt - φ)とおいて計算してみると・・・

s= π*AB * sinφ となるはずです。 では面積Sが別の方法で判明すれば、上の式からsinφをもとめるヒントとなるでしょう。

 離散値 x[n], y[n]で軌跡(厳密には多角形)が得られたとすると、 P[n]=(x[n],y[n]) という「軌跡ベクトル」を用いて、面積Sは計算できそうです。

 2つのベクトルのなす三角形の面積は「外積の1/2」 となることを思い出してください。ここが肝心。 軌跡の作る面積はこの微小三角形の面積の合計です。 しかし、「ちょうど一周」する区間を決めるのが大変です。。。

 以上は私がD1のときに考えていた方法なのですが、振幅A,Bを知っておかないといけないという大問題があります。また積分区間を「ちょうど1周期」にする必要があります。 この課題をブレークスルーするのにさらに3年を要したのですが、答えは「遅延器の両端の信号の位相差」にありました。 遅延器は1段あたり一定時間の遅延時間を発生し、位相差でみると「線形位相」といい、周波数に比例した位相差になります。 このとき、「振幅が変化しない」というのが、変数を消去する武器になったのです。 

【遅延器の入出力の位相差】

 遅延器の入出力の信号の「遅延時間」ΔTは一定です。デジタル信号処理では、サンプリング周波数fsに対し、ΔT=1/fs となります。

では、位相差φで考えるとどうなるか。 意外と簡単で、遅延がK段の場合、φ=2π*K * f/fs となります。周波数表記をサンプリング周波数を基準とした相対周波数表記 F=f/fsとすると、Ω=2πFなので、 φ=KΩ と簡単な式になります。(導出はみなさんで考えてみてください)

 では、こんな単純遅延器の両端の信号を「リサージュ図」に書いたと仮定します。ここで、"波形データから求める簡易的な位相差計算法"で説明した、「位相差」と「リサージュ外積」の関係式に再登場願います。

 二つの信号の振幅をA,Bとし、加える周波数をΩ(相対角周波数表記)、位相差をφをとすると、 sin φ = Ls / A*B sinΩ でしたね。

 ここでトリックです。遅延段数がK1, K2 である2つの遅延器を用意して、前述の信号を加えます。そのときの「リサージュ外積」Ls1,Ls2とします。合わせて、ちょっと前に説明した、φ=KΩという関係式をまとめてみると・・・・

 sin (K1Ω) = Ls1 / (AB * sin Ω) sin(K2Ω) = Ls2 / (AB * sin Ω)

まとめると、邪魔者だった「振幅項」ABがめでたく消えてしまい、

 sin(K2*Ω) / sin(K1*Ω) = Ls2 / Ls1 の関係が得られます。

つまり2つの遅延器(段数=K1,K2)を用意し、そのリサージュ外積(Ls1,Ls2)を波形から計算しておくと、上の式の左辺は定数となり、なんと「未知の変数」はΩだけとなります。やったですね。これで周波数(Ω=2πF = 2πf/fs の関係!)が計算できます。

 計算しやすくするために、K2 = 2*K1 と2倍の段数に設定してみます。sin について倍角の公式をつかうとまたまた簡単になり、

 2 sin(K1Ω) * cos(K1Ω) / sin (K1Ω) = Ls2/Ls1

 2 cos (K1*Ω) = Ls2/L1   Ωについて解くと

Ω = (1/K1) * arccos ( 1/2 * Ls2/Ls1 )  となります。f について変形すると;

f = (fs / 2π*K1) arccos (1/2 * Ls2/Ls1)  となります。サンプリングされた波形から、「リサージュ外積」を計算し、この公式に代入すると、周波数が計算できます。

今回はここまで。