【问题标题】:integration of MATLAB output with a C/C++ program in Linux在 Linux 中将 MATLAB 输出与 C/C++ 程序集成
【发布时间】:2015-08-23 13:56:47
【问题描述】:

我在 MATLAB 中设计了一个神经网络。我保存了“net”文件,其中包括训练网络的结构和其他所需参数。

另外,我有一个在 Linux (Ubuntu) 中用 C 语言编写的程序,它每秒生成一些数据。我想将 MATLAB 中的“网络”与这些生成的数据集成。我的意思是,“网络”从编写的程序中给出每个生成的数据,然后根据其训练打印输出。

如何在 Linux 中将 MATLAB 程序与 C 语言编写的程序集成?

【问题讨论】:

  • 那么 C 程序是为 MATLAB 神经网络生成输入数据,还是反之亦然?
  • 首先,C 程序将输入数据发送到 MATLAB 神经网络。然后,MATLAB 神经网络将结果发送回 C 程序。然后,基于MATLAB神经网络接收数据的C程序,将改变数据生成的方式。
  • 您在使用神经网络工具箱吗?或者您是否使用基础 MATLAB 创建了自己的神经网络?
  • 我在 MATLAB 中使用了自己的编码。
  • 在这种情况下,您可以考虑使用 MATLAB Coder (mathworks.com.au/products/matlab-coder),它将您的 MATLAB 代码转换为符合 ANSI 的 C 代码。然后,您可以直接将其导入您的 C 项目。但是,不支持某些工具箱功能(mathworks.com.au/products/matlab-coder/description2.html);因此我之前的问题。

标签: c linux matlab


【解决方案1】:

您可以使用 Matlab 引擎来完成此任务。基本上我的理解是您需要将数据从 C/C++ 发送到 matlab,运行一些 matlab 代码并将结果返回给 c++。

我有一些用于此任务的 C++ 代码。

代码可以从https://github.com/thusithaC/CppToMat下载

基本上用这个就可以了,

1)从本机程序中打开一个 matlab 引擎 2)调用你想要的任何matlab函数 3) 将数据传入/传出 matlab 工作区到本机程序。

请注意,界面可能不是超级快。因此,如果您有一个运行大量迭代的快速本机程序,则调用这些 matlab 例程可能会减慢速度,尤其是在存在大量数据传输的情况下。但是这个实用程序在调试东西时非常有用,特别是如果您首先在 matlab 中进行原型设计,然后转向 CPP。

【讨论】:

    【解决方案2】:

    如果您希望您的 C 程序作为与 Matlb 相同的执行的一部分运行,您需要使用 Mex。 http://www.mathworks.com.au/help/matlab/matlab_external/introducing-mex-files.html

    Mex 允许您的 C 程序像 Matlab 中的任何其他函数一样循环。 “mex”命令会将您的程序编译成与 Matlab 动态链接的共享对象。您需要在您的 C 函数周围编写一个特殊的包装器,以从 Matlab 中解压缩参数并打包结果。调试 Mex 代码可能很棘手,因此请先确保您的 C 函数已调试好。

    【讨论】:

    • 我在 linux 平台上有一个模拟(通过 C 程序)。这个模拟迭代运行,每秒给出一些结果。我将把这些结果作为输入值发送到我的 MATLAB 代码。然后,MATLAB 代码检查输入数据并生成新结果并将结果发送回 C 程序。然后,C 程序基于从 MATLAB 接收的数据,将更改一些参数以获得新的结果。这是一个循环程序,直到 MATLAB 给出一个超出阈值的值。您认为您建议的解决方案适合我的项目吗?
    • 有太多未知数让我判断Mex是否合适。而不是 Mex,也许您可​​以通过套接字进行通信:blogs.mathworks.com/loren/2011/05/27/…。你绝对必须有Matlab吗?也许 Python 可以完成这项工作?我使用 Matlab 是因为我在 Matlab 中有很多代码,我用 Mex 将它与 C++ 接口,因为我需要速度(和一些 C++ 库),但 Mex 会带来很多痛苦。
    猜你喜欢
    • 1970-01-01
    • 2013-10-19
    • 2015-09-02
    • 2023-03-18
    • 2013-05-09
    • 2013-04-18
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    相关资源
    最近更新 更多