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

2023-12-09

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

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

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

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


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

如果不需要其他服务,C++端将充当信息提供者(ZMQ.PUB发布者 ) 而 MATLAB 端将充当信息订阅者 (ZMQ.SUB ).

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

ZeroMQ 具有 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 绑定here.

有一些浮点数要发送,延迟将在数百甚至数十[usec]以下,正如您的通知提到的数据调度的异步模式,因此本地主机将仅花费一些时钟从本地主机 ZMQ.SUB 检索数据队列。

更复杂的应用程序到应用程序信号传输是可能的,只需受到以下启发ZeroMQ 指南

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 MATLAB 和 C++ 之间交换数据最有效的方法? 的相关文章

随机推荐

  • 如何从片段中的工具栏在列表视图中搜索

    我使用此代码从 ListView 中的 MainActivity 工具栏进行搜索 SearchView searchView Override public boolean onCreateOptionsMenu Menu menu get
  • 为什么 Cython 强制在函数开头声明局部变量

    这是作为评论提出的Cython 复制构造函数 以下代码无法在 Cython 中编译 def bar int i if i 0 return i else cdef int j j i 1 return j 而这个是完全正确的 def foo
  • Java垃圾收集器如何处理自引用?

    希望是一个简单的问题 以循环链表为例 class ListContainer private listContainer next lt gt public void setNext listContainer next this next
  • 如何读取AngularJS中的响应头?

    我的服务器返回这种标头 Content Range 0 10 0 我尝试以角度阅读此标题 但没有成功 var promise http get url params query then function response console
  • 如何使用 Python Discord 机器人发送附件

    我希望我的机器人在调用时将文件 不一定是图像 可以是文本文件 发送到通道 这是我的代码片段 bot command pass context True async def send ctx area ctx message channel
  • 如何在 IPython Notebook 中隐藏一个特定单元格(输入或输出)?

    有没有一种方法可以有选择地隐藏 IPython 笔记本中的一个特定输入或输出单元 我只能找到下面的代码来显示 隐藏所有输入单元格 http blog next Genetics net e 102 但是 如果我只想隐藏笔记本的第一个输入单元
  • 单击VBS中包含特定字符串的链接

    我正在尝试运行一个自动 vbs 脚本 单击页面上的链接 我有以下形式的东西 Const READYSTATE COMPLETE 4 Set IE CreateObject INTERNETEXPLORER APPLICATION IE Vi
  • 选择 2 个字段并返回一个具有不同值的排序数组

    假设我们有以下文档 a 1 b 2 a 2 b 0 a 3 b 1 我想要一个将返回的查询 0 1 2 3 我想知道是否有一种方法可以比以下更快地做到这一点 只需进行 2 个查询 其中一个选择a 另一个选择b然后合并到我的应用程序中 使用m
  • 登录fft结果

    我正在尝试根据测试目标计算 MTF 我很容易计算出扩展函数 但 FFT 结果对我来说不太有意义 总而言之 这些值似乎交替变化 反映了我的期望 为了测试 我使用了一个简单的方波和 numpy from numpy import fft dat
  • 使用 UIPanGestureRecognizer 将 UIView 拖动到有限区域内

    我想允许用户将 UIView 拖动到其超级视图的有限区域内 尝试以下简单代码 func handlePanForImage recognizer UIPanGestureRecognizer if let myView recognizer
  • 当另一个动画正在进行时,Jquery 动画

    我正在使用这里给出的简单缓动动画JQuery 缓动插件即 将 div 从 left 200 缓动到 left 0 并返回 上页的最后一个示例 我在一个容器 div 中有多个 div 我想要做的是通过以下方式为 4 个 div 设置动画 1
  • Windows Phone 7.1 应用程序中的自动登录过程

    在我的 Windows Phone 应用程序中 银光应用程序 我希望用户在成功登录后自动登录到应用程序 即我不希望用户每次都登录 我通过一个隔离存储文件概念 即首先我创建了 一个目录 我创建了一个隔离存储文件流并将电子邮件和密码凭据存储在某
  • 如何将当前日期与日期选择器中的用户输入日期进行比较

    我试图限制日期和时间 我希望如果用户尝试设置小于当前日期的日期 那么它应该显示警报 并且随着时间的推移也要做同样的事情 我正在使用日期和时间选择器和我的onDateSetListener and onTimeSetListener如下 Da
  • 带有像素图的透明 QLabel

    我有一个 QLabel 我使用 setpixmap 在上面放置了一个图像 该图像有 Alpha 通道 QLabel 位于 QWidget 上 该 QWidget 具有由图像指定的边框图像 以便重新缩放图像以填充 QWidget 在QLabe
  • 如何从结构体数组中删除一个元素?

    如何从类型结构数组中删除元素 假设我注册了一个项目 然后想删除它 我该怎么做 删除函数位于代码末尾 我想通过给出删除该项目varunummer 身份证号码 有人知道该怎么做吗 include
  • “挥发性”关键字的用途是什么?

    我读过一些关于volatile关键字 但我无法弄清楚它的正确用法 你能告诉我它在 C 和 Java 中的用途吗 考虑这个例子 int i 5 System out println i 编译器可能会对此进行优化 只打印 5 如下所示 Syst
  • 如何在 Swift 中将自定义对象追加到数组中?

    如何在 Swift 中将自定义类对象追加到数组中 下面是我的代码 但它显示错误 Error 无法将 的值分配给类型 PhotoVC Code var photoVCs PhotoVC for index in 0 lt photos cou
  • C# Mongo FirstOrDefaultAsync 挂起

    使用 2 0 驱动程序 以下代码有时会挂起并且永远不会返回 public async Task
  • 使用 javascript 正则表达式删除所有脚本

    我正在尝试使用 javascript 中的正则表达式从以下类型的字符串中删除包含内容的所有脚本标签 但我仍然得到输出 当它应该是一个空字符串时 代码是 var BG
  • 在 MATLAB 和 C++ 之间交换数据最有效的方法?

    我正在开发一个应用程序 其中有两个程序同时运行 一个在 C 中 另一个在 MATLAB 中 C 程序定期生成三个数值作为输出 MATLAB 程序需要定期但在不同的时间段访问三个输出 目前 我已经使用解决了这个问题 txt文件 当例程完成时