GNU ラジオ (GNU ラジオ コンパニオンのファイル シンク) がサンプルをバイナリ ファイルに保存する形式を知っていますか?
これらのサンプルを Matlab で読み取る必要がありますが、ファイルが大きすぎて Matlab で読み取ることができないという問題があります。
このバイナリ ファイルを読み取るために、C++ でプログラムを作成しています。
GNU ラジオ (GNU ラジオ コンパニオンのファイル シンク) がサンプルをバイナリ ファイルに保存する形式を知っていますか?
これらのサンプルを Matlab で読み取る必要がありますが、ファイルが大きすぎて Matlab で読み取ることができないという問題があります。
このバイナリ ファイルを読み取るために、C++ でプログラムを作成しています。
ファイル シンクは、データ ストリームの単なるダンプです。データ ストリームの内容が単純なバイトの場合、ファイルの内容は単純です。データ ストリームに複素数が含まれている場合、ファイルには複素数のリストが含まれます。各複素数は 2 つの float で指定され、各 float は (通常) 4 バイトで指定されます。
gnuradio ファイルの読み書きブロックの実装については、ファイルgnuradio/gnuradio-core/src/lib/io/gr_file_sink.cc
とを参照してください。gr_file_source.cc
python と gnuradio を使用して、ファイルを他の形式に変換することもできます。
from gnuradio import gr
# Assuming the data stream was complex numbers.
src = gr.file_source(gr.sizeof_gr_complex, "the_file_name")
snk = gr.vector_sink_c()
tb = gr.top_block()
tb.connect(src, snk)
tb.run()
# The complex numbers are then accessible as a python list.
data = snk.data()