ヒルベルト変換用の、フィルタを作る時、
理論的には、周波数軸で、振幅が一定になるよう、firフィルタを作成しますが
私には、解りません...
とにかく、やってみなくては。
SH7047Fで、81タップ時のサンプリング周波数は、ほぼ、37KHzでしたので
それに合わせて作ってみました。
プログラムのソースが付属している、凄いプログラムです!
前々節の、firフィルタ作成のプログラムと、殆ど同じですが、
ヒルベルト変換器の、遅延器の中点からの出力を、moto_dataと言う変数に、取り込みました。
そして、ヒルベルト変換器からの出力と、交互に、出力してみました。
上が、入力信号、下の、振幅の大きい方が、ヒルベルト変換器の出力=虚部。振幅の小さい方が、遅延器の出力=実部
あれまあ、逆のようです...(失敗して、わかりました。以降を、お読み下さい)
いやいや、虚部は、実部から1/4周期遅れているから、合ってるわ、解らなくなりますねえ。
入力は、2KHzの正弦波ですので、周期T=1/2000sec=0.0005sec=500マイクロsecです。
従って、1/4周期遅れ=125マイクロsecです。実測とほぼ同じになりました、ホッ。
遅延器からの出力と、ヒルベルト変換器の振幅の差が、気になりますが、どうしたものか...はて。
これは、私の単純なミスでした。
data=(data_chukan>>14)の所の、Q14が間違いでした。Q15でした。
振幅が、ほぼ、揃いました、よかった (^_^)
この差は、計算時のデータの切捨ての為では、ないかな...解らんですけど。
それから、遅延器からの出力と、ヒルベルト変換器の出力は、
私は、最初、同時に出力してみましたら、めちゃくちゃな波形になりました....
ヒルベルト変換器の出力の遅延が、何で遅延器の中点なのかは
実は、まだ、解っていません... (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.