閱讀307 返回首頁    go 阿裏雲 go 技術社區[雲棲]


對 GNU Radio 進行 Octave 分析


Octave 是 GNU Radio 的最流行的分析工具,鑒於此 GNU Radio 軟件包也包含它自身的一組腳本( scripts )用於讀取和語法分析輸出。

安裝- Installing

可以從源碼( source)來安裝 Octave,或者在 Ubuntu 內使用如下命令:

sudo apt-get install octave

以便 GNU Radio 的 Octave 腳本能夠被直接使用,必須在 Octave 的路徑變量中添加 GNU Radio 的路徑。 這通過操作 Octave 的配置文件 ~/.octaverc 很容易被做到。查看清楚 GNU Radio 的路徑 /home/username/gnuradio/。然後把如下內容添加到 ~/.octaverc:

addpath("/home/username/gnuradio/gnuradio-core/src/utils/")

數據的語法分析 - Parsing Data

從語法上分析 GNU Radio 的數據輸出,最便捷的方法便是使用 GNU Radio 提供的腳本。如上安裝指導所示,確保把 GNU Radio 的腳本的路徑已經添加到 Octave 的路徑中。這便可幫助讀取那些使用 gr.file_sink (大小、文件名) 頃倒到磁盤的數據。

下麵的方法函數是基於參數 size 的用在 gr.file_sink() 內的,它把文件名作為第一個參數、第二個參數是可選項,它表示了從文件中要讀取的數量。

  • read_complex_binary(): gr.sizeof_gr_complex
  • read_float_binary(): gr.sizeof_float
  • read_int_binary(): gr.sizeof_int
  • read_short_binary(): gr.sizeof_short
  • read_char_binary(): gr.sizeof_char

比如:在 Python 腳本中,使用 gr.file_sink(gr.sizeof_gr_complex, "capture.dat") 獲取了 64 位的複合數據如下:

c=read_complex_binary('capture.dat');

從 USRP 直接能獲取的數據是以 32 位複合數據形式存儲的,而不是 64 位複合型 (gr.sizeof_gr_complex)。為了能讀取此數據,首先,使用 read_short_binary() 然後將其分離進入 - a two dimensional vector 如下:

d=read_short_binary(data);
c=split_vect(d,2);

圖形繪製 - Plotting

使用 Octave 來繪製數據,最簡便的方法是使用 gnuplot。可以從源碼(source)來安裝或者在 Ubuntu 上鍵入如下命令:

sudo apt-get install gnuplot

在時間軸上的 I 和 Q,可如下分別地繪製各個元素:

plot([real(c), imag(c)])

如下可生成一個 I/Q 曲線(x 表示 I ,y 表示 Q):

plot(c)

最後更新:2017-04-03 12:54:00

  上一篇:go Android 使用Scroller實現絢麗的ListView左右滑動刪除Item效果
  下一篇:go C++編程規範之38:實施安全的覆蓋