科研记录2.2python处理CSI信号
⽬标:脱离CSI信号总⽤MATLAB进⾏处理分析,改为⽤Python
⼀、python调⽤Matlab的脚本和函数⽂件
1、检查您的系统是否具有受⽀持的 Python 版本和 MATLAB R2014b 或更新版本。有关详细信息,请参阅 MATLAB 产品(按版本)所⽀持的 Python 版本。
2、到 MATLAB ⽂件夹的路径。启动 MATLAB,并在命令⾏窗⼝中键⼊ matlabroot。复制 matlabroot 所返回的路径PATH。
3、安装引擎 API
要安装引擎 API,请选择以下选项之⼀。您必须在指定的⽂件夹中调⽤此 python 安装命令。
1)在 Windows 操作系统提⽰符下(您可能需要管理员特权才能执⾏这些命令)-
cd "PATH\extern\engines\python"
python3 setup.py install
2)在 macOS 或 Linux 操作系统提⽰符下(您可能需要管理员特权才能执⾏这些命令)-
(venv) zhutao@zhutao-B360M-POWER:~/PycharmProjects/pythonProject$ cd /usr/local/MATLAB/R2018a/extern/engines/python
(venv) zhutao@zhutao-B360M-POWER:/usr/local/MATLAB/R2018a/extern/engines/python$ python3 setup.py install
Writing /usr/local/lib/python3.6/-info
去/usr/local/lib/python3.6/dist-packages⽂件夹把matlab⽂件夹和⽂件复制
到/home/zhutao/PycharmProjects/pythonProject/venv/lib/python3.6/site-packages路径中,然后按照官⽅⽅法即可。
例⼦脚本:
在某个⽬录有⼀个test.m⽂件,则在同样的⽬录运⾏⼀个Test.py,内容如下:
ine
eng = ine.start_matlab()
指定 nargout=0。尽管脚本会打印输出,但它不会向 Python 返回任何输出参数。
总结:在python3.6及matlab2018ra下进⾏调⽤matlab是可⾏的,主要应⽤命令⾏中的python3命令和ine api接⼝进⾏。理论上read_bf_socket功能已经在python实现,但因为更新环境导致tcpip协议在收集实时数据时不可⽤。
⼆、⽤python读取dat⽂件
正确的数据解析步骤应该是:
1.从⽂件将头部信息和csi矩阵读取到字典,即read_bfee_file()
2.依次从字典中取出标准化CSI,即get_scale_csi()
3.将所有csi整合到⼀起,保存为csv
三、python处理CSI信号代码
1、get_csi⽬录:
<_wifi.py:
python怎么读取dat文件
脚本⽂件,利⽤os.system()函数实现运⾏单个命令⾏,利⽤os.popen()函数实现运⾏多个命令⾏,设置参数“gnome-terminal -e ”实现多进程同时打开多个终端。
实现舍弃原有项⽬中收数多⾏多步操作的繁琐,运⾏即采集数据,存为dat格式。
还未实现,⽬标实时监控。
3.sudo_matlab.py
2、read_csi⽬录:
根据正确的数据解析步骤:
1.从⽂件将头部信息和csi矩阵读取到字典,根据官⽅read_bfee_file()函数,在read_csi⽂档中创建了dat_dict.py⽂件;
2.依次从字典中取出标准化CSI,根据官⽅get_scale_csi()函数,在read_csi⽬录中创建了dict_standard.py⽂件;
3.将所有csi整合到⼀起,保存为csv,在read_csi⽂档中创建了standard_csv.py⽂件;
在read_csi⽂件夹创建以下两个⽂件:
1.Demo_plot.py:
利⽤matploylib库和numpy库,调⽤解析步骤中的1、2步中的⽂件,实现画出csi信号的初步图像;
2.Demo_save_csv.py:
实现将dat数据转化为标准化格式并以csv格式的⽂件储存;
test_sub.py:
数据提取+画⼦载波变换
wifilib.py:
参考所⽤

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。