私の計画は、信号を聞いて変換するために GNU Radio を使用することです
そのためにはハードウェアが必要です。どのような SDR デバイスを考えていますか?
以下では、生の I & Q サンプルを提供するデバイスを取得するという従来の SDR アプローチを実際に使用していると仮定します。
数メガヘルツにわたって 500 Hz 間隔で信号強度のベクトルを取得し、それらを行列にまとめる方法があれば。
マトリックスでゆっくりと、等間隔の周波数から電力を得ることに焦点を当てましょう:
これはほとんどパワー スペクトル密度 (PSD) 推定量です。最も簡単で、おそらく最速で古典的なアプローチは、入力信号の FFT の振幅の 2 乗を取ることです。
GNU Radio Companion にはlog-power FFTブロックがあり、入力時間のサンプル ストリームに対して、FFT size
レートでベクトル (明らかに = サンプル レート / 500 Hz になるはずです) が得られますFrame rate
。例えば:
次の理由により、これらのベクトルをファイルに保存するだけで十分です。
GNU でファイル シンク ブロックを使用しようとしていて、それがバイナリであることに気付きました。また、何が含まれているのか正確にはわかりません。
それは、メモリ内にあるように、生の、連続した数字です。それについては常にいくつかの誤解があるので、それに関する FAQ エントリがあります。それを引用して:
すべてのファイルは純粋なバイナリ形式です。ただのビット。それでおしまい。浮動小数点データ ストリームは、ファイルに 32 ビットとして次々に保存されます。複素数信号には、実部が 32 ビット、虚部が 32 ビットあります。複素数を読み戻すということは、32 ビットを読み取り、それを複素数データ構造の実部に保存してから、次の 32 ビットをデータ構造の虚部として読み取ることを意味します。そして、データを読み続けてください。
したがって、使用する方法の 1 つは、 Python/numpy
を使用しnumpy.fromfile(file, dtype=numpy.float32)
、を使用numpy.reshape((rows,cols))
して、結果の float の 1D 配列を必要なマトリックス形状にすることです。
あなたのファイル命名の希望について:それはかなりアルゴリズム的な問題です(そして、なぜこの質問がここで非常に話題になっていると思いますか)。おそらく、自分で少しコードを書くことは避けられないでしょう。それは本当に難しいことではありません。常にn
ベクトルを取得し、現在の時刻と一致する名前のファイルにそれらを書き込む Python ブロックは、アプリケーションにとって完全に機能します。
ブロックを書くことは、GNU Radio でできる最も楽しいことの 1 つです。GNU Radio Guided Tutorialsを紹介することは非常に価値があると思います。それらは読むのがとても楽しく、ハードウェアなしで例に従うことができます! 順番に行うことをお勧めします。
いくつかのコメント:
- FFT は、優れた、使いやすく、高速で効率的な推定器です。
ただし、トラッカーの特性によっては、フィルターバンクを使用した方が精度/エラー確率の点で優れている可能性があります。GNU Radio と DSP に慣れてきたら、GNU Radio に付属の Polyphase Filter Banks を見てください。これにより、1 つの「適切な」ローパス フィルターを使用して 1 つのチャネルを選択し、それらを等間隔で複製することができます。
- 私は、GNU Radio の外で分析を行わないことに非常に慣れています。
推定器から出てくるサンプル(あなたの場合は、対数パワーFFTなど)を取得し、それらを使用して有用なことを行い、その出力をQt GUIなどに接続するだけの別のpythonブロックを作成する方がはるかに簡単だと思いますたとえば、測定サンプルを取り、Matlab または R にプッシュするよりも、周波数シンクを使用します。
ほとんどの場合、測定フロー グラフを実行する Python ファイルを生成し、その結果をベクトル シンクに保存します。その Python ファイルから、フローグラフの実行が完了したら、numpy を使用してすぐに独自のオフライン分析を行います。
瞬時に再現できるメリットあり!
最後のコメント: あなたはすでに SDR デバイス (RTL ドングル) を持っていると言います。それは素晴らしいことです!
PC に接続します。librtl/gr-osmosdr を使用osmocom -s 1e6 -W
して、1 MHz の帯域幅を「表示」します。送信機の周波数に合わせてスペクトルを観察します。あなたはたくさん学ぶでしょう!
すべてのソフトウェアをまだ持っていない場合: GNU Radio live SDR 環境をダウンロードして起動するだけです。プラグ&プレイ!
GNU Radio Companion では、UHD: USRP ソースを osmocom ソース (RTL ドングルと通信可能) に置き換えるだけです。