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

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

離散系における周波数の表現方法

2015-07-20 01:35:43 | 信号処理
離散系における周波数の表現方法には便利なやりかたがあります。

信号 y(t) が、 y(t)=A * sin (ωt + φ ) などと定義されていても、
サンプリング周波数を意識してその都度 t を計算しながら波形を
求めるのは面倒です。

実は、サンプリング周波数fs を基準とする「相対周波数」や
「相対角周波数」を使うと計算が非常に楽になります。


(相対周波数)

大文字 F をつかって, F = f / fs とします。サンプリングの限界である
ナイキスト周波数は F= 0.5 と書くことができます。

角周波数は ω =2πf と同様にω -> Ωと大文字にして、
Ω = 2πF とします。

(離散系表記)

 相対周波数をつかうと、各サンプル n における値は

y[n] = A * sin( Ωn - φ ) と書くことができます。 この式なら
Excelなんかでも簡単に波形が計算できそうですね。

(例)

fs = 44100 Hz 、 f=441 Hz なら、F= 0.01 となります。 
実は、Fの逆数は、「1周期あたりのサンプル数」と等しくなります。

ーーー

 わたしが書いた論文では、多くの場合、この相対周波数表記を
使用しています。



当社の位相差測定方法

2015-07-20 01:07:49 | 信号処理
位相差測定・計算のための公式は知られておりません。

 例えば 時系列波形 x,y  を与えて、φ =phase ( x ,y ) のような
位相差計算ができるとこれは画期的なことです。

しかし、位相差測定(計算)で、周波数が異なる信号の位相差は
どうなるか?リサージュ図を使って位相差を求める方法は教科書に
かかれていますが、周波数が異なり図形が安定しないと、リサージュを
使う方法は不可能です。

 DFT/FFTを使えば一発ではないか、という意見もあります。
しかし角度の引き算は以外に厄介で位相差が変化する場合(すなわち
周波数座が微妙にあある)は面倒です。

(ベクトル図による方法)

 ここでベクトル図の基本に立ち返ってみます。 2つのベクトル
p,q があったとすると、p, q のなす角度はどうやれば計算できるか?

 これは簡単で、p ,q の内積を求めて;
cos φ = (p・ q) / (|p| *|q| ) とやればOKです。
p =( x1, y1 ), q = (x2, y2) とすると、角度φは;

cos φ = (x1 * x2 + y1 * y2 ) / {sqrt( x1^2 + y1^2 ) sqrt(x2^2 + y2^2 )}
と計算できます。

外積を使うと、今度はsinφの形式で
sin φ = (p × q) / (|p| *|q| )
sin φ = (x1 * y2 - x2 * y1 ) / {sqrt( x1^2 + y1^2 ) sqrt(x2^2 + y2^2 )}
となります。

 もし、あつかう信号がベクトルであるならば、位相差は、
内積・外積・絶対値から求めることができます。90度付近はcos に
よるものが有利です。 0度付近では外積を使うものが計算しやすく
なります。

(課題)

 しかし、測定したい信号は通常実数です。IQ信号を扱えるところは
少ないです。 もし、実信号を「非常に簡単な方法」でベクトル化
(IQ信号)に変換できれば、以上説明した「ベクトル」による非常に
シンプルな位相差計算ができることになります。

(既知の方法)

 直交信号を作成するためには「ヒルベルト変換」を使うことができます。
時系列信号を X_re であたえると、X_im = Hilbert ( X_re )のように一発で
計算できます。(Matlab等では標準)
しかし、この中身はあるインパルス応答の畳み込み積分。計算量は少なく
ありません。

(当社の方法)

 当社で考案した方法では「遅延器」をつかって90度信号をシフトする
方法です。遅延時間と移相量は比例することを利用しますが、問題は
90度をどうやって正確にコントロールするか。

90度の移相の方法;
「遅延器を使うIQ信号作成方法」をご覧ください