在 C/C++ 中调用 MATLAB API

Posted

技术标签:

【中文标题】在 C/C++ 中调用 MATLAB API【英文标题】:Call MATLAB APIs in C/C++ 【发布时间】:2009-11-05 01:39:14 【问题描述】:

我刚刚从某处听说,对于数值计算,“MATLAB 确实提供了一些用户友好的 API。如果您在 C/C++ 代码中调用这些 API,您可以显着加快计算速度。”

但是我在http://www.mathworks.com/support/tech-notes/1600/1622.html和http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_external/bp_kqh7.html这样的MATLAB文档中没有找到这样的信息。我从这些网站上学到的只是 MATLAB 可以通过 Matlab 引擎在 C 和 C++ 中调用,或者通过 mcc 将 M 文件编译到库中。他们没有提到任何可以在 C/C++ 中调用的内置数值 MATLAB API。

有人可以澄清一下吗?

感谢和问候!

【问题讨论】:

啊,仔细阅读你的问题,我看到你不想使用Engine。据我所知,没有直接的数字 API 可供调用。 谢谢。是的,这就是我的意思。 【参考方案1】:

您需要“引擎”例程。这允许您从 C 启动后台 MATLAB 进程并对其执行计算:relevant MATLAB documentation。

它工作得很好,看看例子。我想说让它工作最烦人的事情是在 C 和 MATLAB 之间编组数据。但是在做这种事情时,这总是一个问题。

【讨论】:

【参考方案2】:

听起来您正在寻找嵌入式 matlab 工具箱或实时研讨会中的代码生成工具。

执行doc eml 并查找 LMS(最小均方)均衡器演示。

代码生成器非常好,它会给你一个生成静态库的生成文件。它很容易与您的独立 C/C++ 代码一起使用。

【讨论】:

【参考方案3】:

quote 可能引用了一些东西,我假设它引用了MATLAB Compiler。所以从 MATLAB -> C++ 你可以使用编译器来构建独立的“更快”的应用程序。但是,在对改进进行速度测试时,我注意到它可以忽略不计。老实说,从一开始就用 C 编写工作可能要好得多,编译器生成的代码是意大利面条式的且非面向对象的。我还应该提到,这是对 Matlab 的一个昂贵的扩展。

您可以在自己的 c++ 项目中将 MCR 用作独立库 (details)...但使用 Numerical Recipes 可能会得到类似的结果。

免责声明:我在 2-3 年前使用过这个产品,现在情况可能会有所不同。

【讨论】:

以上是关于在 C/C++ 中调用 MATLAB API的主要内容,如果未能解决你的问题,请参考以下文章

是否可以通过在 matlab 中调用 c/c++ 代码来加速 matlab 绘图?

加速 Matlab 引擎调用

C/C++程序通过动态链接库调用MATLAB程序

Matlab 编译C/C++源文件并调用

Matlab与C/C++混合编程之Matlab调用OpenCV库函数

Matlab与C/C++混合编程之Matlab调用OpenCV库函数