MATLAB Compiler加密和归档您的 MATLAB 代码(保留为 MATLAB.m
代码),并将其打包到一个精简的可执行文件(.exe 或 .dll)包装器中。这与 MATLAB 编译器运行时 (MCR) 一起交付给最终用户。如果您愿意,也可以将 MCR 打包在可执行文件中。
MCR 是可自由再分发的,您可以将其视为本质上没有前端桌面的 MATLAB 副本。
当用户运行可执行文件时,它会解压缩和解密 MATLAB 代码,并针对 MCR 而不是 MATLAB 运行它。因此,通过这种方法交付的应用程序应该与它们在 MATLAB 中的运行方式完全相同(包括相同的速度)。
MATLAB Coder将 MATLAB 语言的子集转换为 C 代码。然后可以以许多不同的方式使用它,包括作为 mex 文件带回 MATLAB,使用 C 编译器编译以从另一个应用程序调用,或交付到嵌入式设备。由于它是 C 代码而不是 MATLAB 代码,因此它通常(尽管并非总是)运行速度比原始 MATLAB 代码快得多。C 代码不需要 MCR。支持的 MATLAB 语言子集非常广泛,但在提交此工作流程之前,您需要了解一些值得注意的限制。生成的代码是 C 代码,但如果您需要使用 C++ 编译器而不是 C 编译器,它可以生成 C++ 包装器。
MATLAB Compiler适用于您希望简单且(相当)直接地与没有 MATLAB 副本的人共享您编写的 MATLAB 应用程序的用例。由于部署的.m
代码是加密的,它还可以用于共享 MATLAB 代码,同时保护知识产权。
MATLAB Coder还有其他用例,例如希望通过转换为 mex 文件来加速 MATLAB 代码,或者需要为另一个应用程序或嵌入式设备生成 C 代码。
如果您有更详细的问题,我真的建议您致电 MathWorks 并询问他们。
编辑:以上信息对于 MATLAB R2014b 及以下版本是正确的。从 MATLAB R2015a 开始,MATLAB Compiler的功能已与MATLAB Builder产品的功能重新混合,并且还有一个新产品MATLAB Compiler SDK。
从 R2015a 开始,MATLAB 编译器的工作方式与上述相同(即加密、存档和打包,但不生成 C),但现在将打包为 .exe 和 Excel 插件 (.xla)。在 R2015a 之前,此功能曾经存在于产品MATLAB Builder EX for Excel 中。
从 R2015a 开始,MATLAB 编译器不再生成 .dll 组件。此功能已移至新产品MATLAB Compiler SDK,该产品还包括生成 .NET 程序集和 Java 类的功能。在 R2015a 之前,此功能曾经出现在MATLAB Builder NE for .NET和MATLAB Builder JA for Java产品中。
换句话说:
在 R2014b 及以下版本中,我们有:
MATLAB 编译器:生成 .exe 和 .dll 组件
.NET 的 MATLAB Builder NE:生成 .NET 程序集
MATLAB Builder JA for Java:生成 Java 类
MATLAB Builder EX for Microsoft Excel:生成 Excel 插件。
在 R2015a 中,我们有:
MATLAB 编译器:生成 .exe 和 Excel 插件
MATLAB Compiler SDK:生成 .dll、.NET 程序集和 Java 类。
MATLAB Coder的范围和用例在这些版本中没有改变(尽管有新功能)。
编辑:从 R2015b 开始,MATLAB Compiler SDK还生成 Python 包。
可以在此处找到有关区分MATLAB Coder 和 MATLAB Compiler for C/C++ 的其他信息。
用于代码生成的不同 MATLAB 产品的比较表。