matlab全安装多大_Matlab实现Zmq通讯

17280f736e8c8a7a4eb8ccd95add1b23.png

ZeroMQ(简称Zmq)是一个强大的网络通讯库,它让你告别底层的socket套接字,快速完成网络甚至进程间的数据通信。它速度快,跨平台,提供异步I/O模型,方便构建异步消息处理,而且提供了多种语言接口。

18c152128391b5c231547bded50494a2.png

然而悲剧的是,官方没有提供Matlab接口!不用找,Other里也没有。怎么办?

等等,解决办法先放一放,先来思考一个问题:Matlab通过Zmq接收数据,有什么用呢?

举个例子,比如你要开发了一个设备,肯定先开发硬件,然后在上位机上开发软件从硬件采集数据,接着将数据交给算法工程师开发算法,算法形成后再提供给软件使用。这是一个串行的操作,没有软件采集数据,算法工程师就无法开发算法。

但是一定要有软件工程师这个中间商吗?不一定。只要硬件能插上网线,数据就插上了飞翔的翅膀。只需在下位机编写一个简单的数据分发小程序,所有局域网的人足不出工位,就可以在线获取数据,这样就可以同步开发软件界面和功能算法。如果再配合上Matlab的Web App,初步算法完成后,整一个小界面直接部署到服务器,就可以直接在会议室,甚至领导电脑上展示全流程效果(数据采集、预处理、算法效果等)。是不是6的飞起!

解决办法

1、非官方绑定

  • zmqmat:一种实现方式,但发布时间是7年前,太老了
  • matlab-zmq:对ZeroMQ进行绑定,需要编译,已经5年没更新了
  • cosy-zeromq-matlab:提供了对官方ZeroMQ的绑定,但4年前发布了版本1.0,后续就没下文了,其安装需要编译C代码,使用上也有限制;
  • jeromq:是纯Java的ZeroMQ实现,而Matlab可以调用Java包,所以有人说可以用这个来实现调用Zmq,但需要使用maven进行编译,麻烦。

2、借助胶水-Python

Matlab不能直接使用,但可以借助万能的胶水语言Python啊!前一篇博文介绍了Matlab调用Python的方法,这里实操一把。

思路

使用Zmq的发布订阅模式实现示例。

  • 首先,编写Python的发布数据程序,启动后不断往外发数据;
  • 然后,编写Python的接收接口程序,在__main__里有测试代码,直接运行可以查看效果;
  • 最后,使用Matlab调用Python接口程序,实现数据获取。

实现

1、发布数据程序

'''

cmd运行,开始不断往外发数据,效果为

>python server.py
[1, 2, 1]
[2, 4, 4]
[3, 6, 9]
[4, 8, 16]
[5, 10, 25]
[6, 12, 36]
[7, 14, 49]
[8, 16, 64]
[9, 18, 81]
[10, 20, 100]
[11, 22, 121]

2、接收接口程序

测试从发布程序中接收数据

'''

直接执行,可以看到能从发布程序中收到数据

py:建立Zmq连接127.0.0.1:4321
0 array('d', [4.0, 8.0, 16.0])
1 array('d', [5.0, 10.0, 25.0])
2 array('d', [6.0, 12.0, 36.0])
3 array('d', [7.0, 14.0, 49.0])
4 array('d', [8.0, 16.0, 64.0])
5 array('d', [9.0, 18.0, 81.0])
6 array('d', [10.0, 20.0, 100.0])
7 array('d', [11.0, 22.0, 121.0])
8 array('d', [12.0, 24.0, 144.0])
9 array('d', [13.0, 26.0, 169.0])

3、Matlab调用Python获取数据

%% 从Zmq读取数据

执行效果,如下Matlab调用Python不断获取了数据

py:建立Zmq连接127.0.0.1:4321
     2     4     4

     3     6     9

     4     8    16

     5    10    25

     6    12    36

     7    14    49

     8    16    64

     9    18    81

    10    20   100

    11    22   121
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值