如何用Octave对GNURadio的数据进行分析

如何用Octave对GNURadio的数据进行分析

Octave是GNURadio平台上最流行的分析工具,以致GNURadio软件包也包含了一组octave的脚本来读取和从语法上分析数据。
Matlab是闭源且很贵的软件工具,但是如果你已经安装了它,那么比起Octave也许你会更喜欢Matlab.

安装指导

Octave的安装可以从源码进行,或者在Ubuntu下使用如下命令:

sudo apt-get install octave

为了可以使用GNURadio的Octave脚本,你必须将它的路径添加了Octave的路径变量中。这可以通过配置~/.octaverc文件很容易地完成。查看清楚你的GNURadio路径后(/home/username/gnuradio/),你可以将下面的命令添加到~/.octaverc中:

addpath(“/home/username/gnuradio/gr-utils/octave”)

分析数据

从语法上分析GNURadio的数据输出,最简单的方法就是使用GNURadio提供的脚本。确保你已经按照安装指导中的说明,将GNURadio脚本的路径添加到了octave路径中。这便可以帮助你读取那些利用gr.file_sink(size, filename)函数存储到磁盘的数据。
下面的函数都是基于gr.file_sink函数中的参数size的。每种方法都将文件名作为第一参数,第二个参数是可选的,用来指定将要从文件中读取数据的长度:

  • 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脚本命令后,可以得到在GNURadio中用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()函数,然后再将它分割成二维矢量,如下:

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

作图

为了在Octave中能够画图,最简单的方法就是用gnuplot。你可以通过源来安装GNU plot或者从Ubuntu中安装:

sudo apt-get install gnuplot

如果想同时画出I,Q两路数据随时间变化的情况,那么就应分别绘图

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

如果想得到I/Q图(X轴是I路,Y轴是Q路),则可以使用如下命令

plot(c)

用Python作为Octave和Matlab之外的另一个选择

很有可能你已经安装了一些Python的科学分析包,例如SciPy和NumPy (特别是Matplotlib)。利用这些工具,你可以使用Python来绘制或者分析数据。

你可能感兴趣的:(开源夏令营)