《转》笔记3获取csi文件,并用MATLAB处理
Posted Wi-Fi研习者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《转》笔记3获取csi文件,并用MATLAB处理相关的知识,希望对你有一定的参考价值。
转自:http://blog.csdn.net/sodleave/article/details/44455903
利用MATLAB对csi数据进行分析与获取,参照网站 http://dhalperi.github.io/linux-80211n-csitool/faq.html 的第二部分 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会不兼容,不建议使用)
进行相关配置后输入:(参考网站; http://blog.sina.com.cn/s/blog_468651400100coas.html )
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处理的主要内容,如果未能解决你的问题,请参考以下文章
《转》笔记2关于Linux 802.11n csi tool的安装注意事项
Kubernetes学习笔记之CSI External Provisioner源码解析
计算下列数字两个图像块的二维DFT和二维DCT,并用Matlab编程验证计算结果