使用代码包将 Matlab 代码转换为 .mex

Posted

技术标签:

【中文标题】使用代码包将 Matlab 代码转换为 .mex【英文标题】:Matlab code to .mex using code package 【发布时间】:2012-01-03 15:16:52 【问题描述】:

我想通过将代码转换为 C\C++ 来优化用 Matlab 编写的函数。结果应该可以在 matlab 中调用,因为它只是较大 matlab 代码的一小部分。

例如,将我的函数转换为包含在 .mex 文件中的 C 代码就可以了。 我听说 matlab 编码器包可以帮助解决这个问题。

由于我不熟悉这个包,最快的方法是什么?

【问题讨论】:

这取决于您的代码的复杂性...您有 matab 编码器许可证吗? 【参考方案1】:

如果您有 MATLAB Coder 的许可证,那么,是的,这就是要使用的正确包。您正在寻找的功能是codegen。在代码生成中可以使用的内容有限制:要查看您的函数是否满足这些限制,请在函数开头添加标签%#codegen,如下所示

function foo(bar) %#codegen
    <your code here>

并在 MATLAB 编辑器中打开函数文件。该标签告诉编辑器检查代码是否符合代码生成规则。一旦编辑器显示您的代码符合这些规则,生成 mex 文件可能就像

>> codegen foo

这将在当前文件夹中生成一个 mex 文件 foo_mex。对于您的特定功能,您可能需要使用 codegen 的一些可选参数来正确生成 mex 文件。

【讨论】:

谢谢。我有执照。我可以把这个 mex 给没有执照的人吗? (可能在此软件包发布之前运行较旧的 Matlab 版本) AFAIK 使用 mex 文件不需要许可证。然而,Mex 文件是特定于体系结构的,正如您可以从它们的文件扩展名中看到的那样,因此您需要了解其他人机器的体系结构。至于旧版本的 MATLAB,我想 mex 文件链接到的基本库没有太大变化,但您需要检查它是否适用于您的应用程序。

以上是关于使用代码包将 Matlab 代码转换为 .mex的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将 mex 代码转换为 C++ 代码?

如何将基于mpir库的VC9.0代码转换为Matlab mex函数?

如何找到 Matlab mex 文件的代码?

使用 Matlab codegen 在 Matlab 2013 中创建 mex 文件时出错

MEX (C -> Matlab) 转换为 int -> 在 mac/linux 和 windows 上双倍不同

matlab中用于mex函数的安全、快速的CFLAGS