filter特性も周波数遷移できる、複素周波数変換
1. 複素積は、すごい!
上図は、以下の LPF ( Low Pass Filter )を、複素積を使って、+5KHzだけ、周波数遷移したものです。
結果は、負の周波数側の成分が出現して、BPF ( Band Pass Filter )に、なりましたわ...
//*******************************************************************************************
どういう風にして作るか? と、言いますと、こうしました。
実フィルターの係数配列 a[ NUM_FILTER ]
複素数 +5KHz exp(5KHz)
フィルターの実数配列 a[] と、複素数+5KHzを、掛けます。
a[] * exp( 5KHz ) = a[] * ( cos( 5KHz ) + i sin( 5KHz ) )
= a[] * cos( 5KHz ) + i ( a[] * sin( 5KHz ) )
これで、フィルターの係数の数 NUM_FILTER の分だけの
複素数が、出来上がります。( これが、複素フィルター係数に、なるのでは、ないでしょうか? )
出来た NUM_FILTER 個 の複素数を入力として、
複素FFTに、入力すれば、よいのです。
//*******************************************************************************************
firフィルタの係数をQ15して、それを、入力データとして、
spectrum解析したもので、レベルは、小さくなっています。
この辺りの理論、及び実験は、
ELMのChanさんの ラジオ、スペクトラム、モニタ
Blackfin空挺団、酔漢さんの 複素プロダクト検波
どちらの方も、すごい実験を、なさって、おられます。お二方には、いつも、お世話になっております m(__)m
ものすごい、参考になります....ちゅうか、私は、純アマチュアの立場で、追試しているだけの存在です...(^_^;;
今は、巡回畳み込みを使った、直線畳み込みによる、fir filterの事を、調べています。
SDR-1000は、2048 tap の fir filterを、使っているらしい、からです。
「FFTを使った、直線たたみ込み」を、使っているに、違いないと思ってます。
長大な fir filterの使用については、
「シミュレーションで学ぶディジタル信号処理 尾知 博先生 CQ出版 p.46」
に、詳しい、丁寧な記述が、あります。( 「3.2.4 DFTを用いた直線たたみ込み」 [実習3.7 FFTを使ったOverlap-Save法 p.51」 .etc )
巡回畳み込みに付きましては、webにて、ここも、参考にさせて頂きました、御礼申し上げます。
2. 追加記事 (途中経過)
上図は、上述のfir filter( Low Pass Filter ) 101tapを用いて、
FFTによる直線たたみ込み(つまり、入力をFFTしたものと、fir filterをFFTしたものとの、積)の、結果です。
sampling周波数に比して、tap数が少ないので、ギザギザしてますね。
注意点は、阻止帯域を描画している時も、通過帯域には、-65dB付近の出力が、観察される事です。
fir filterの、tap数を増やせば、これが、無くなるんやろか....
H.18.10.15