実際にやってみましょう、ヒルベルト変換

1.まだ、解らないのですが...

ヒルベルト変換用の、フィルタを作る時、

理論的には、周波数軸で、振幅が一定になるよう、firフィルタを作成しますが

振幅を一定にするだけで、位相は$\pi $/$2$だけ遅れたものを作れるのでしょうか?

位相が$\pi $/$2$進んだものには、ならないのでしょうか?

 

 

私には、解りません...

 

 

とにかく、やってみなくては。

 

 

2.ヒルベルト変換用のフィルタを作ってみる

SH7047Fで、81タップ時のサンプリング周波数は、ほぼ、37KHzでしたので

それに合わせて作ってみました。

MATH

        プログラムのソースが付属している、凄いプログラムです!

MATH

前々節の、firフィルタ作成のプログラムと、殆ど同じですが、

ヒルベルト変換器の、遅延器の中点からの出力を、moto_dataと言う変数に、取り込みました。

そして、ヒルベルト変換器からの出力と、交互に、出力してみました。

 

上が、入力信号、下の、振幅の大きい方が、ヒルベルト変換器の出力=虚部。振幅の小さい方が、遅延器の出力=実部

あれまあ、逆のようです...(失敗して、わかりました。以降を、お読み下さい)

いやいや、虚部は、実部から1/4周期遅れているから、合ってるわ、解らなくなりますねえ。

 

 

$\vspace{1pt}$

入力は、2KHzの正弦波ですので、周期T=1/2000sec=0.0005sec=500マイクロsecです。

従って、1/4周期遅れ=125マイクロsecです。実測とほぼ同じになりました、ホッ。

 

遅延器からの出力と、ヒルベルト変換器の振幅の差が、気になりますが、どうしたものか...はて。

これは、私の単純なミスでした。

data=(data_chukan>>14)の所の、Q14が間違いでした。Q15でした。

 

 

振幅が、ほぼ、揃いました、よかった (^_^)

 

この差は、計算時のデータの切捨ての為では、ないかな...解らんですけど。

 

それから、遅延器からの出力と、ヒルベルト変換器の出力は、

 

   サンプリングの1周期毎に、交互に、送り出します。

 

私は、最初、同時に出力してみましたら、めちゃくちゃな波形になりました....

 

ヒルベルト変換器の出力の遅延が、何で遅延器の中点なのかは

実は、まだ、解っていません... (T_T)

同時に、実部と、虚部を出力できたのは、一度、テーブルに、データーを格納した、お陰です。

 

テーブルを、上部(data_up[81])と、下部(data_low[81])の、ふたつの配列に分けて格納したのですが

data_up[100]みたいなものも、無事出力できました。

つまり、配列が繋がっていれば、

配列の宣言以上の添え字でも、お構いなく、出力してくれるようです、エラーにならなくて助かった...

H.16.1.16

This document created by Scientific Notebook 4.1. この文書は次の製品で作成しました Scientific Notebook 4.1.