1、可以使用一台无线路由AP作为发射机(共2根发射天线),使用一台配备了Intel WiFi Link 5300无线网卡和Ubuntu操作系统的台式机作为接收机(共3根接收天线)来进行实验。还可以使用两台配备Intel5300网卡的台式机做实验,一台做发射机,一台做接收机。最后可以通过修改NIC的设备驱动程序,来读取每个数据包接收时以CSI的形式记录在硬件中的CSI值,并生成包含CSI信息的dat文件。这些dat文件是以二进制进行保存的,最后我们还要使用MATLAB或者Python程序来读取dat文件,从而获取丰富的csi信息。每个位置点测试1500个数据包。
2、使用MATLAB解析dat文件,显示1615*1个元胞数组,这些原胞数组包含了1615个1*1的结构体,每个结构体表示一个数据包的所有信息,包括了信道状态信息
3、一个数据包的字段解释:
timestamp_low : 时间戳,相连两包此值差单位为微秒 此参数可以确定出波形的横轴时间
bfee_count : 驱动记录并发送到用户控件的波束测量值 的总数。可以用该变量来检测被丢弃的测量值
Nrx:接收端使用的天线数量
Ntx:发送端使用的天线数量
rssi_a, rssi_b, rssi_c:由接收端NIC测量出的RSSI值
perm:展示NIC如何将3个接收天线的信号排列到3个RF链 上,上图中的数据表示天线A被发送到RF链A,天线B被发送 到RF链B,天线C被发送到RF链C。
rate:发包频率
csi:csi值(后面详细解释)
4、csi值矩阵说明
csi的值是一个n*m*30的复数矩阵,n表示发射天线的个数,m表示接收天线的个数,30是子载波个数。已知设备的发射天线为2根,接收天线为3根。复数形式为val=a+bi,我们可以得到复数的模 和相角 ,也就是对应的幅度和相位。matlab提供abs函数和angle函数可获取到该复数的幅值和相位。当然会由于硬件和环境带来的偏差导致相位难以处理,导致很多学者或者研究者放弃使用相位指纹。
5、提取的幅值和相位如下:
创作不易,尊重原创,因为存在博主直接剽窃,所以很多文章进行了删减,希望大家谅解。如有对室内CSI指纹定位感兴趣的可阅读下面的文章:
1、室内定位之CSI指纹定位_数产小黑娃的博客-CSDN博客
2、CSI室内指纹定位——相关通信名词解释_数产小黑娃的博客-CSDN博客