【笔记3】获取csi文件,并用MATLAB处理

利用MATLAB对csi数据进行分析与获取,参照网站 的第二部分 How do I process CSI with MATLAB or Octave?以下过程全在MATLAB中进行。

首先是包含csi数据的文件存放位置,参考前面的install instruction。新版的安装指南:linux-80211n-csitool-supplementary/netlink/目录下的csi.dat ;旧版的安装指南:linux-80211n-csitool-supplementary/netlink目录下的tmp.dat。将该文件拷到win 7能识别的地方,,我们在win 7中用MATLAB对该文件进行操作。

示例中的csi文件是log.all_csi.6.7.6,以后替换为tmp.dat或csi.dat即可。

先将MATLAB目录转到linux-80211n-csitool-supplementary/matlab ,在命令窗口输入:csi_trace = read_bf_file(‘sample_data/log.all_csi.6.7.6’); 发现read_bfee出错。原因是网站只提供了32位(.mexw32)版本的read_bfee,而我的电脑是win7 64位的。要想利用read_bfee函数需要自己生成64位(.mexw64)版的。这里涉及到MATLAB与c联合编程的问题。

环境:MATLAB 2010b(更新的版本也行) ,visual studio 2010 (用VC 6.0会不兼容,不建议使用)

进行相关配置后输入:(参考网站;)

mex -setup …..用于c编译器的选择,选择vs2010即可

….. ….一些默认的设置(该部分若不清楚,百度“如何生成mex文件”即可)

mex read_bfee.c

最后生成read_bfee.mexw64

注意该部分会遇到编译不通过的情况,是由于vs 2010要求的语法格式与网站中的read_bfee.c有所不同。用codeblocks等gcc编译器就不会出现问题(但MATLAB与gcc编译器的绑定有些麻烦,不予考虑)(vs2010中不允许在程序主体部分再定义变量,所以将read_bfee.c中所有变量的定义移到函数开始阶段。即需要在程序的首部把该定义的变量都定义了)

附上编译出错的图片:

将read_bfee.c稍作更改再编译,最后成功生成read_bfee.mexw64文件,以后可以直接调用read_bfee.

后续的操作按照网站中的来,我利用同学的小型Tp-link路由器得到数据;

csi_entry =

timestamp_low: 1.0139e+009

bfee_count: 2

Nrx: 3

Ntx: 1

rssi_a: 39

rssi_b: 28

rssi_c: 12

noise: -85

agc: 20

perm: [1 2 3]

rate: 2311

csi: [1x3x30 double]

生成的图形:

Q&A:换一个路由器测得Ntx不为1,此时再用网站中的squeeze等作图会出错,关于Ntx的定义还不是很明确。

猜想:Ntx相当于发送天线的个数,Nrx相当于接收天线的个数。

那么前世我的目光一定一刻都没从你身上离开过吧!

【笔记3】获取csi文件,并用MATLAB处理

相关文章:

你感兴趣的文章:

标签云: