我在 MATLAB 中设计了一个神经网络。我保存了“网络”文件,其中包括训练网络的结构和其他所需参数。
另外,我有一个在 Linux(Ubuntu)中用 C 语言编写的程序,它每秒生成一些数据。我想将 MATLAB 中的“网络”与这些生成的数据集成。我的意思是,“网络”从编写的程序中给出每个生成的数据,然后根据其训练打印输出。
如何在 Linux 中将 MATLAB 程序与 C 语言编写的程序集成?
您可以使用 Matlab 引擎来完成此任务。基本上我的理解是您需要将数据从 C/C++ 发送到 matlab,运行一些 matlab 代码并将结果返回给 c++。
我有一些用于此任务的 C++ 代码。
代码可以从https://github.com/thusithaC/CppToMat下载
基本上使用这个你可以,
1)从本机程序中打开一个 matlab 引擎 2)调用您想要的任何 matlab 函数 3)将数据传输到/从 matlab 工作区到本机程序。
请注意,界面可能不是超级快。因此,如果您有一个运行大量迭代的快速本机程序,则调用这些 matlab 例程可能会减慢速度,尤其是在存在大量数据传输的情况下。但是这个实用程序在调试东西时非常有用,特别是如果您首先在 matlab 中进行原型设计,然后转向 CPP。
如果您希望您的 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 函数。