MATLAB 中的数据流,输入数据来自 C++ 可执行文件

Posted

技术标签:

【中文标题】MATLAB 中的数据流,输入数据来自 C++ 可执行文件【英文标题】:Data streaming in MATLAB with input data coming in from a C++ executable 【发布时间】:2009-07-01 23:16:07 【问题描述】:

我是 MATLAB 的新手,我想知道我有哪些选项可以从 C++ 文件流式传输数据。

我听说为此目的使用 MATLAB“引擎”,以及一些方法,如 engPutVariable 等,但是有人可以给我一个完整的例子来说明如何去做吗?我正在尝试实现流式传输正弦波,但是通过发送一组样本数据的简单示例就足够了。

【问题讨论】:

【参考方案1】:

您有两个选择:matlab 引擎和 mex 函数。值得注意的是,Matlab API 是单线程的。绝对没有办法让用户可见的后台线程。充其量是 UI 事件的中断。

使用 Matlab 引擎,您的应用程序是一个使用 Matlab 作为插件库的 C++ 应用程序。您可以从 C++ 调用 Matlab 函数,但您必须确保在任何时间点只有一个线程访问 Matlab。因此,您可以有一个线程从来自应用程序其余部分的输入队列向 Matlab 提供数据。 C++ 可以拥有任意数量的线程,但只有一个可以与 Matlab 交互。

另一种方法是让 Matlab 控制主应用程序,让它在需要更多数据时调用 C++ 代码。 C++ 代码充当 Matlab 的插件。 C++ 代码可以有尽可能多的线程,但是当你的 m 文件调用它时,Matlab 会轮询 C++。查看有关 MEX 函数的文档。

【讨论】:

谢谢!这至少可以清除一点,这样我就可以开始了。

以上是关于MATLAB 中的数据流,输入数据来自 C++ 可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

怎样将matlab中的.mat 文件转换为二进制文件,输入到c++程序中使用

如何在 C++ 中读取来自网络摄像头的输入?

如何查询/删除matlab 内存中的变量?

已经给出数据如何用matlab软件画图

将 C++ MEX 文件中的值返回到 MATLAB

C++ 基本 While 循环:未知输入和值增量