微嵌电子技术(北京)有限责任公司

返回 常见问题


如何对 GNURadio 进行Octave分析?


如何对 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)

010-62416824

微嵌 - 产品活动信息


为大学生毕业设计,推出USRP1套件,现特价优惠!

详    情