在MATLAB和C ++之间交换数据的最有效方法是什么?

时间:2014-10-31 19:18:06

标签: c++ matlab

我正在开发一个应用程序,其中有两个程序同时运行:一个用C ++编写,另一个用MATLAB编写。

C ++程序定期生成三个数值作为输出。 MATLAB程序需要定期访问三个输出,但需要在不同的时间段内访问。

目前,我已使用 .txt 文件解决了这个问题。当例程完成时,C ++会写入这个文件,MATLAB会从中读取它。

但是,使用 textscan 命令,MATLAB需要大约1.5 ms才能使用Pentium I5-4250U读取.txt。所以,我想知道是否有更快的方法来解决这个问题。

1 个答案:

答案 0 :(得分:4)

答:是的,使用消息传递层

如果不需要其他服务,C ++方将充当信息提供者( ZMQ.PUB 发布者),MATLAB方将充当信息订阅者( {{1 }} )。

这样,与消息传递相关的低级细节由分布式处理消息传递层解决,您的解决方案将受益于速度,现成的工具,并可分发到私有网格计算/云计算架构,使用相同的仪器,获得额外的性能等。

ZeroMQ具有C ++和MATLAB的绑定,因此这是一个开始并尝试从流程到流程的消息传递层方法的地方。

ZMQ.SUB

可以找到MATLAB绑定here

有一些浮点数要发送,延迟将在数百甚至几十[usec]之下,因为你的通知提到数据调度的异步模式,所以localhost将花费一些时钟从localhost ZMQ检索数据.SUB队列。

更复杂的应用程序到应用程序信令是可能的,只是受到ZeroMQ Guide

的启发