使用python调用matlab API接口进行数据分析

找到matlab安装目录下自带的setup.py的路径我的路径如下

D:\MATLAB\R2018a\extern\engines\python

打开cmd进入到刚才找到的路径

管理员权限执行!!! pyhton setup.py install

具体代码

1.将csiTool中的matlab文件夹下的文件拷到pycharm的工作目录下,我的拷出来不行,于是从Github中重新下载了下来,考进去成功!

csi_trace=read_bf_file('csi.dat');

csi_entry=csi_trace{1}

timestamp_low: 4 (In the sample trace, timestamp_low is invalid and always 4.)

bfee_count: 72

Nrx: 3

Ntx: 1

rssi_a: 33

rssi_b: 37

rssi_c: 41

noise: -127

agc: 38

perm: [3 2 1]

rate: 256

csi: [1x3x30 double]

timestamp_low:NIC网卡1MHz时钟的低32位。它大约4300s(72min)重复一回。 (从0-2^32需要4300s),时间戳,相连两包此值差单位为微秒,通过验证发现100hz的发包频率此差值为10000,20hz的发包频率此差值为50000,此参数可以确定出波形的横轴时间。

当发包频率过大会出现接收端停止收数的情况:20Hz正常,200Hz和1000Hz的采样频率,收端最多接收一分多钟的的数据(原因是recv函数接收数据阻塞导致)

1、将包长变小后还是有同样的问题。

2、由数据速率引起的,它太高,程序无法处理(可以尝试设置非阻塞)

0x4101决定了主机仅一根天线发送数据,因此此处的Ntx值为1,另外采用的是OFDM模式 如果想要收端接收到发端两根天线的数据(CSI的格式为2×3×30),只需要把第14、15位均设置为1,即在发送端的脚本里面设置为0xC101 注:关于0x4101的具体说明如下

bfee_count:驱动记录并发送到用户控件的波束测量值的总数。内核和用户空间中netlink频道是有损的,可以用该变量来检测被丢弃的测量值。

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值

3374094

MATLAB命令

a=[1 2 3;4 5 6] #矩阵

A' #A的共轭转置矩阵

ones(2,3) #一矩阵

b=1:0.1:2 #集合间距为0.1

zeros(2,3) #零矩阵

rand(2,3) #随机矩阵,数值介于0和1之间

randn(2,3) #矩阵(一个平均值为0的高斯分布,方差或者等于1的标准偏差)

eye(2) #单位阵

hist() #直方图

size() #矩阵的尺寸

size(A, 1) #矩阵第一维的尺度

length(A) #由于矩阵A是一个

3×2的矩阵,因此最大的维度应该是3,因此该命令会返回3。

who # 命令,能显示出工作空间中的所有变量

whos #命令,能更详细地进行查看

load('featureX.dat') # 加载数据文件,变量名等于文件名

clear #命令,删除所有变量,加变量名删除特定

save hello.mat v #这个命令会将变量v存成一个叫 hello.mat 的文件,按二进制存储

save hello.txt v -ascii # 这样就会把数据存成一个文本文档,或者将数据的 ascii 码存成文本文档

键入 A(3,2) # 这将索引到 矩阵的 (3,2) 元素。

键入A(2,:) #返回第二行的所有元素

A([1 3],:) #取的是A矩阵的第一行和第三行的每一列

A = [A, [100, 101,102]] #这样做的结果是在原矩阵的右边附加了一个新的列矩阵

A(:) #这是一个很特别的语法结构,意思是把 A中的所有元素放入一个单独的列向量,这样我们就得到了一个 9×1 的向量

A.*B #这么做将矩阵 A中的每一个元素与矩阵 B中的对应元素相乘

A.^2 #这将对矩阵中每一个元素平方

1./A #得到中每一个元素的倒数。同样地,这里的点号还是表示对每一个元素进行操作。

exp(A) #自然数e的幂次运算

abs(A) #取绝对值

val=max(A) #默认情况下max(A)返回的是每一列的最大值,如果你想要找出整个矩阵A的最大值,你可以输入max(max(A))

[val, ind] =max(A) #这将返回矩阵中的最大值存入,以及该值对应的索引

A<3 #这将进行逐元素的运算,所以元素小于3的返回1,否则返回0。

find(A<3) #这将告诉我A中的哪些元素是小于3的。

A = magic(3) #magic 函数将返回一个矩阵,称为魔方阵或幻方 (magic squares),它们具有以下这样的数学性质:它们所有的行和列和对角线加起来都等于相同的值。

[r,c] = find(A>=7) #这将找出所有矩阵中大于等于7的元素,r 和c分别表示行和列

sum(a) #就把 a 中每列所有元素加起来了。

sum(a,2) #求每行的和

prod(a) #prod 意思是product(乘积),它将返回这四个元素的乘积。

floor(a) #向下四舍五入,因此对于 a中的元素0.5将被下舍入变成0。

ceil(a) #向上四舍五入,所以0.5将上舍入变为最接近的整数,也就是1。

type(3) #这通常得到一个3×3的矩阵

max(rand(3),rand(3)) #这样做的结果是返回两个3×3的随机矩阵,并且逐元素比较取最大值。

max(A,[],1) #这样做会得到每一列的最大值。

max(A,[],2) #这将得到每一行的最大值。

sum(sum(A.*eye(9)

hold on #函数的功能是将新的图像绘制在旧的之上。

再加上命令xlabel('time'), 来标记X轴即水平轴,输入ylabel('value'),来标记垂直轴的值。

legend('sin','cos') #表示这两条曲线表示的内容。

title('myplot') #显示这幅图的标题。

print(gcf,'-dpng','abc.png') #保存为png格式的图片到当前路径

squeeze() #用于删除矩阵中的单一维,对二维矩阵无效。

close会让这个图像关掉。

键入figure(1); plot(t, y1);将显示第一张图,键入figure(2); plot(t, y2); 将显示第二张图(同时显示两张图)

subplot(1,2,1),它将图像分为一个1*2的格子,也就是前两个参数,然后它使用第一个格子,也就是最后一个参数1的意思

axis([0.5 1 -1 1])也就是设置了轴的范围。横轴的范围调整至0.5到1,竖轴的范围为-1到1。

Clf清除一幅图像。

我有时用一个巧妙的方法来可视化矩阵,也就是imagesc(A)命令

我还可以使用函数colorbar,让我用一个更复杂的命令 imagesc(A),colorbar,colormap gray 它生成了一个颜色图像,一个灰度分布图,并在右边也加入一个颜色条。所以这个颜色条显示不同深浅的颜色所对应的值。

csi_trace = read_bf_file('csi6.dat');%数据读取

for l=1:1 %取50个数据包的数据

csia=get_scaled_csi(csi_trace{l});%提取csi矩阵

for i=1:1 %1个发射天线

for j=1:3 %2个接收天线

for k=1:30 %30个子载波数据

B(i,j,k)=csia(i,j,k);

end

end

end

plot(db(abs(squeeze(B).')))

%squeeze通过移除第一个单维度将csi变成3*30的矩阵

%db将线性空间变成以十为底的对数空间

%.'转置得到30*3的矩阵

%plot(Y)如果Y是m×n的数组,以1:m为X横坐标,Y中的每一列元素为Y坐标,绘制n条曲线

hold on%当前轴及图像保持而不被刷新,准备接受此后将绘制的图形,多图共存

end

legend('RX Antenna A', 'RX Antenna B','RX Antenna C', 'Location', 'SouthEast' );

xlabel('Subcarrier index');

ylabel('SNR [dB]')

hold off;

%get_eff_SNRs() 它接受一个CSI矩阵作为输入,并返回一个线性(幂)空间中有效信噪比值的74矩阵。

%这4列对应的有效信噪比使用四种802.11调制方案,即BPSK/QPSK/16QAM/64QAM。

%7行对应于7个可能的天线选择,包括3个天线和1、2或3个空间流。

%特别是,前3行对应于天线A、B或c的单流传输,后3行对应于天线AB、AC或BC的双流传输。最后一行对应于使用所有天线的3流传输

matlab 微秒 符号,matlab处理csi相关推荐

  1. matlab 的 符号,MATLAB符号计算

    <MATLAB符号计算>由会员分享,可在线阅读,更多相关<MATLAB符号计算(33页珍藏版)>请在人人文库网上搜索. 1.第7章 MATLAB符号计算,7.1 符号计算基础, ...

  2. matlab 无穷符号,MATLAB强大的符号运算

    符号对象(Symbolic Objects 不同于普通的数值计算)是Matlab中的一种特殊数据类型,它可以用来表示符号变量.表达式以及矩阵,利用符号对象能够在不考虑符号所对应的具体数值的情况下能够进 ...

  3. matlab 点符号,matlab 中在运算符号前加一点是什么意思?

    matlab 中在运算符号前加一点是什么意思? mip版  关注:210  答案:2  悬赏:20 解决时间 2021-01-23 18:50 已解决 2021-01-23 08:24 例如,矩阵A. ...

  4. Matlab冒号符号(MATLAB中最有用的操作符)

    冒号(:)是MATLAB中最有用的操作符之一.它用于创建向量,下标数组,并为迭代指定. 如果要创建一个包含从1到10的整数的行向量,则书写为 - 1:10 MATLAB MATLAB执行语句并返回一个 ...

  5. matlab 微分符号,Matlab 符号微积分

    6.3 符号微积分 6.3.1 符号序列的求和 [ * 例 6.3.1 -1 ]求 , syms k t;f1=[t k^3];f2=[1/(2*k-1)^2,(-1)^k/k]; s1=simple ...

  6. matlab解符号方程组,matlab 求解符号方程组

    1特殊符号可爱组成的小狗图案 求解符号方程组: 特殊符号可爱组成的小狗图案,缺失:matlab求解符号方程组4057/9 ▄██████▄ █████████▄ ███ ▄████▄▄▄▄███ ██ ...

  7. matlab 符号表,MATLAB——matlab特殊符号表【转载】

    链接来源: matlab特殊符号表 http://blog.sina.com.cn/s/blog_4a09187801014xg9.html Character Sequence Symbol Cha ...

  8. MATLAB创建符号变量和符号表达式

    MATLAB创建符号变量和符号表达式 MATLAB符号运算处理的主要对象是符号或符号表达式,为此要使用一种新的数据类型-符号变量.符号表达式的创建可由符号''或sym函数来完成,sym一次只能创建一个 ...

  9. 使用Matlab进行符号定积分运算

    使用matlab进行符号定积分运算如下: syms x;syms b;f =b + 2*x;a=int(f,x,-6,6) a =12*b 首先设置参量,本例中为x 和 b: int函数(被积函数,积 ...

最新文章

  1. 【我的技术我做主】笑谈PHPer水平区分
  2. 基于Reddsion分布式的锁实现
  3. redis php web管理,redis web管理工具phpRedisAdmin安装
  4. Java Web学习(四)http协议
  5. mysql5.6安装51cto_MySQL 5.6 for Windows配置安装之解压缩版
  6. Order By 排序条件中带参数的写法(Oracle数据库、MyBatis)
  7. Windows 命令模式下删除驱动
  8. scala中父类的继承
  9. 如何知道域名是否解析成功
  10. 31.Linux/Unix 系统编程手册(上) -- 线程:线程安全和每线程存储
  11. 117. php empty()函数坑
  12. 通信协议(三)——IIC协议
  13. 客所思kx 2传奇版控制面板
  14. lammps及Reaxff反应力场二合一专题内容都在这
  15. 四VCO单声道/多声道合成器:KORG Polysix for mac
  16. UVa 220 黑白棋 算法竞赛入门经典 习题4-3
  17. PHP 实现精确统计在线人数功能
  18. IDE和SATA双硬盘安装全攻略
  19. Java基础知识与集合部分面试题整理
  20. 安卓开发——安卓界面布局笔记

热门文章

  1. python语言的数据类型图解_Python基础——数据类型(图解+实例,非常详细!)
  2. 王思聪吃热狗的c语言小程序,王思聪吃热狗火了,开发各种恶搞小程序!王校长:我不要面子的啊...
  3. java 弹出软键盘_Android开发之弹出软键盘工具类简单示例
  4. 谷歌浏览器无网络连接 打不开网页解决办法
  5. Android平台Camera2数据如何对接RTMP推流到服务器
  6. java axis2 教程_webservice的Axis2入门教程java版
  7. 网络中的计算机如果加入家庭组,win10系统加入其他计算机家庭组的操作方法
  8. python统计字数分布可视化展示_数据的概率分布并用python实现概率分布可视化图...
  9. java 阻塞 socket_java socket非阻塞I/O
  10. python与linux关系_如何处理Linux / Python依赖关系?