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

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

波形データから求める簡易的な位相差計算方法

2015-07-21 15:35:45 | 信号処理

 時系列波形 x[n], y[n]から位相差θを求める
簡易的な「位相差計算方法」を説明します

 サンプリング周波数fs, 周波数ωと振幅Ax,Ay がわかっている
ものとします。

(方法)

1) 周波数を正規化します。 Ω = ω/fs とします. (ω=2πf)

2) 以下のLsを計算します。

  Ls = x[n] * y[n-1] - x[n-1] * y[n]

3) 位相差 sinθは

sin θ = Ls / (Ax * Ay *sin Ω)

ともとめられます。
 
 上記 Ls は 「波形のどの部分で計算しても」同じ値と
なります。必要あれば、広い区間で平均化して使うといいです。

振幅、周波数が既知である2つの波形の位相差は、上の計算式を
用いて位相差が ±90度の範囲で求めることができます。

(周期の大きな波形の場合)

1周期のサンプル数が大きい場合、Lsの計算が安定しません。
この場合、2)の処理で、「隣のサンプル」を広くとることができます。

  Ls = x[n] * y[n-K] - x[n-K] * y[n] のようにLsを計算するなら
  sin θ = Ls / (Ax * Ay *sin KΩ)

で計算できます。

(証明)

 x[n] = Ax * sin (Ωn)
 y[n] = Ay * sin(Ωn -θ) 

とおいて三角関数の各種公式で展開すると、計算式を導出できます

(問題)

 しかし、ちょっと不満がありますね。
・ 振幅と周波数が「既知」でないといけない
・ 位相差が ±π/2 の範囲でしか扱えない。

簡易的には利用価値が高いと思いますので、興味あるかたはどうぞ。

もし、周波数は分かっていて、振幅は未知の場合、

波形データから求める簡易的な位相差計算方法 (2) をお試しください。


遅延器を使うIQ信号作成方法

2015-07-21 01:26:14 | 信号処理
周波数既知の信号が時系列波形 x[n] で与えられているとします。
この信号をIQ化したい。 どうするか?

周波数がわかっているなら、1周期あたりのサンプル数を計算し、
その1/4 の段数の遅延を加えると 90度の移相は完成します。

しかし、1周期のサンプル数が4の倍数にならなければどうするか。
または、整数にならない場合はどうするか?

(2つの遅延器)

 ユニークな方法を紹介します。

1) 遅延器 D1,D2 を直列につなぎます。
 それぞれK段の遅延。計2K段。
2) D1への入力を x0,   D1の出力を x1,
  D2の出力を x2 とします。

3) I 信号は D1出力をそのまま取り出します。
4) Q信号はちょっとトリッキーな方法で合成します。

 入力された信号の周波数をΩで表現すると、

Q= (x2- x0 ) * A
ただし A = 0.5 * 1/cosθ ; θ =KΩ-π/2

 となります。 周波数を「相対角周波数」で表現するのがコツです。

(90度の移相器)

 この式を見ると、x2-x0 は90度の移相ができていることを
示しています。係数Aは振幅をあわせるものです。

こうやって、「周波数がわかってさえいれば」 ベクトル化(IQ化) 
できます。 そうすると・・・・

前回説明した、ベクトル演算(内積、外積)で位相差は簡単に
求められます。 今回説明した方法では周波数を知っておく必要が
ありますが、これも、すでに説明した方法で周波数Ωをもとめる
ことができます。

(位相差測定の手順)

まとめると、

1)信号1、信号2の周波数Ωをはかっておき、
2)今回説明した方法で IQ信号に変換、
3)ベクトル演算で、位相角がcosφ, sinφ で得られます。

信号2に「基準信号」を設定すると、その基準からの位相角が
得られます。 同一の基準信号から測定した位相角の差分を
とれば位相差になります。