在Python中从.mat文件读取CSI矩阵复数

时间:2018-12-26 00:57:54

标签: python matlab numpy scipy

我一直在尝试探索使用WiFi信号进行人类活动检测的主题。该网站(http://tns.thss.tsinghua.edu.cn/wifiradar/index_en.html#fh5co-press)以.mat格式提供CSI读数的数据集。我想将这些值导入Numpy数组或Pandas DataFrame之类的数据中,以分析数据并可能执行一些机器学习任务。

这是我读取文件的方式:

d = scipy.io.loadmat(file)
d.keys(): 
dict_keys(['__header__', '__version__', '__globals__', 'csi_data', 'gt_trace', 
'init_loc', 'rx_loc', 'ts_data', 'tx_loc'])

我对csi_data字段感兴趣。在该字段中,所有包含复数的csi数组彼此串联:

array([[array([[ -4.50318786 +8.44347724j,   5.62898483+10.69507118j,
     13.50956359 +1.12579697j, ...,  -4.50318786 +1.12579697j,
     -0.56289848 +3.3773909j ,   0.56289848 +2.25159393j],
   [  7.8805554  +3.37738089j,  10.13214266 -6.19186496j,
      0.        -12.94662673j, ...,   2.25158726 +3.9402777j ,
      3.37738089 +0.j        ,   2.25158726 -1.12579363j],
   [  6.7553659  -5.62947158j,  -0.56294716-11.82189032j,
    -12.38483747 -4.50357726j, ...,   4.50357726 -1.12589432j,
      0.56294716 -3.37768295j,  -0.56294716 -2.81473579j],
   ...,
   [ -9.00567956 -6.75425967j, -13.50851934 +3.37712983j,
     -5.62854972+14.63422928j, ...,   2.25141989 -5.62854972j,
     -2.81427486 -3.37712983j,  -3.37712983 -1.12570994j],
   [ -7.31688093 -9.00539191j, -12.94525087 +0.56283699j,

当我尝试len()时,它返回1,因此所有的key,value迭代方法都不适用于该方法,因为它们将其视为单个字段。

我希望每个数组都在一行中并带有数字索引(0,1,...) 感谢您的帮助!预先感谢

0 个答案:

没有答案