EmtyProjectを使う その12



 1.もっとsimpleに...


      一連のDigital 信号処理が、もっと、simpleにならんか? と、考えた。

     フィルタとは、切り取る事や。

     ほなら、素直に、切り取ってみる事にした。

     入力をFFTした結果を、必要な部分だけ切り取り、他のFFT成分をゼロにする、だけです。

     先ず、入力信号をFFTする。

       DATA->myfir->get_CaptureData_FFT_result(DATA->current_Q,DATA->current_I,2048,DATA->capture_fft,work,ip,w);

     同調して、必要な帯域分(span)だけ、切り取る。

  //ここで、DATA->tuneで、周波数遷移する
  //DATA->capture_fft の一部分だけを変化させて同調し、 span幅だけ、0Hzへ copyする

    span=(DATA->info_array[selected_mode].band_width*4096/Sample_Rate);

     switch(DATA->info_array[selected_mode].usb)
     {
     case 0:

     if(DATA->tune>0)
     {
       if( DATA->tune>span )
       {

        for(i=0;i<span;i++)
        {

          dest[2*i]=DATA->capture_fft[8192-2*DATA->tune+2*i];
          dest[2*i+1]=DATA->capture_fft[8192-2*DATA->tune+2*i+1];

        }
        break;
     }   
   etc ...............

   そして、素直に 逆フーリエ変換して、時間軸に戻して、音声として出力する 。 


 2.結果は
 

     比較の為に、
     今までの、通常の方法での、音声出力が、下の図。




     実際に、聞き比べてみても、実験の方法では 雑音が多い。

     これは、出力が、ぶつ切れ状態である事が原因する。

     単位インパルスを入力したような、一様な周波数分布の雑音出力である。

     出力を連続的にするには、overlap add法なるものを、使うんやろか?

     文献が、ありませんねんワン。


     雑音が取れれば、「こんな楽な方法はない、ルンルン ♪ 」ですね。

     帯域を決定するのも、spanを、何個にするか? だけですもんね。


     実験の状態でも、アマチュアバンドを受信している限り、

     空電によって、雑音が紛れて、通常の方法での受信と、大きな違いは感じません。.
.

    ps. 是之プログラム 命名 「 Jyaiko_101 」

   H.19.9.14