gpt4 book ai didi

c++ - 在 MATLAB 和 C++ 之间交换数据的最有效方法?

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:44 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

A:是的,使用消息层

如果不需要其他服务,C++端作为信息提供者(ZMQ.PUB发布者),MATLAB端作为信息订阅者(< strong>ZMQ.SUB ).

通过这种方式,与消息传递相关的低级细节由分布式处理消息传递层解决,您的解决方案将受益于速度、现成的工具,并且可以分布到私有(private)网格计算/云计算上体系结构,使用相同的仪器,获得额外的性能等。

ZeroMQ 绑定(bind)了 C++ 和 MATLAB,因此这是一个开始体验进程到进程消息传递层方法的地方。

% MATLAB script to setup zeromq-matlab
clear all;
if ~ispc
s1 = zmq( 'subscribe', 'ipc', 'MATLAB' ); %% using IPC transport on <localhost>
else
disp('0MQ IPC not supported on windows. Setup TCP transport class instead')
disp('Setting up TCP')
s1 = zmq( 'subscribe', 'tcp', 'localhost', 5555 );
end

recv_data1 = []; %% setup RECV buffer

可以找到 MATLAB 绑定(bind) here .

有几个 float 要发送,延迟将低于数百甚至数十 [usec],正如您的通知提到的数据分发的异步模式,因此本地主机将只花费一些时钟从本地主机 ZMQ 检索数据.SUB 队列。

更复杂的应用程序到应用程序信令是可能的,请从 ZeroMQ Guide 中获得灵感

关于c++ - 在 MATLAB 和 C++ 之间交换数据的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26681941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com