作为一名科研小白,在看了不算多的论文之后总算是踏上了实践的道路。
无奈万里长征的第一步,我的电脑就遇到了各种问题。
第一步就是获取CSI文件并且用matlab处理
这里可以参考https://blog.csdn.net/sodleave/article/details/44455903 这个网站写得比较详细。我再梳理一下步骤:
将MATLAB目录转到/Users/tanxiaolan/Desktop/linux-80211n-csitool-supplementary-master/matlab2 也就是你存放csi文件的地方。如图所示。
然后直接在命令窗口输入:csi_trace = read_bf_file('O-log.dat');
(1)注意⚠️同时,在这个文件夹里面要存放如下类型的文件。如果没有的话就要自己编译生成。上面的网站写了win 64位的系统遇到问题的解决方案。我这里不再赘述,讲讲我的MAC64位的系统遇到的问题。
如果你没有将其放在同一个文件夹里,matlab会提醒你,未定义函数或变量。如果有以上的文件,并且也将他们放在了同一个文件夹里,但是又遇到了问题。MEX文件无效,也就是说上面的read_bfee.mexmaci64 这个文件无效。
MEX文件无效
Library not loaded: @loader_path/libmex.dylib in matlab
Reason: image not found。
如下所示:
这里涉及到在MATLAB里调用c语言的衍生程序的问题。首先搞明白MEX是什么,MEX文件是由C或Fortran语言编写的源代码,经matlab编译器处理而生成的二进制文件。它是可以被matlab解释器自动装载并执行的动态链接程序,类似windows下的dll文件。
MEX文件实现了一种其它语言与MATLAB的接口,通过MEX文件可以在MATLAB中像调用内嵌函数一样调用使用C语言和Fortran等语言编写的函数,实现了代码重用,同时也能提高MATLAB环境中数据处理的效率。
解决方案:这里,遇到了MEX文件无效,找到.c的源文件,对其进行重新编译。
⚠️注意:这里要先下载一个XCode。Xcode 是运行在操作系统Mac OS X上的集成开发工具(IDE)。直接在app store里下载即可,但如果如果系统不兼容的话,比如我的电脑是15年的,就只能想办法下载老版的,我是在某鱼上五块钱买了一个安装包。
下载完成后,在matlab命令行窗口中输入: mex -compatibleArrayDims read_bfee.c 利用.c源文件生成一个.mexmaci64的MEX文件。最后再重新读取文件即可。
最后这个部分是参考了stackoverflow上面一个的一个相关问题,原网址如下:https://stackoverflow.com/questions/48458660/library-not-loaded-loader-path-libmex-dylib-in-matlab
原问题答案如下:
最后,忙活了一天,总算是打开了原始的.dat文件,也算是没白忙活。写下这些给有需要的人~希望自己科研道路顺利。