MATLAB编译器加密并存档您的 MATLAB 代码(保留为 MATLAB.m
代码),并将其打包在一个瘦可执行文件(.exe 或 .dll)包装器中。它与 MATLAB 编译器运行时 (MCR) 一起交付给最终用户。如果您愿意,MCR 也可以打包在可执行文件中。
MCR 可以自由地重新分发,您可以将其视为本质上没有前端桌面的 MATLAB 副本。
当用户运行可执行文件时,它会解档并解密 MATLAB 代码,并针对 MCR 而不是 MATLAB 运行它。因此,通过此方法交付的应用程序的运行速度应与在 MATLAB 中完全相同(包括相同的速度)。
MATLAB 编码器将 MATLAB 语言的子集转换为 C 代码。然后可以通过多种不同的方式使用它,包括作为 mex 文件带回 MATLAB、使用 C 编译器进行编译以便从另一个应用程序调用,或者交付到嵌入式设备。由于它是 C 代码而不是 MATLAB 代码,因此它通常(尽管并非总是)比原始 MATLAB 代码运行得快得多。 C 代码不需要 MCR。 MATLAB 语言支持的子集非常广泛,但在实施此工作流程之前,您需要先了解一些值得注意的限制。生成的代码是 C 代码,但如果您需要使用 C++ 编译器而不是 C 编译器,它可以生成 C++ 包装器。
MATLAB编译器适用于您想要简单且(相当)直接地与没有 MATLAB 副本的人共享您编写的 MATLAB 应用程序的用例。自部署以来.m
代码经过加密,还可以用于共享 MATLAB 代码,同时保护知识产权。
MATLAB 编码器还有其他用例,例如想要通过转换为 mex 文件来加速 MATLAB 代码,或者需要为其他应用程序或嵌入式设备生成 C 代码。
如果您有更详细的问题,我强烈建议您致电 MathWorks 询问他们。
Edit:以上信息对于 MATLAB R2014b 及更低版本是正确的。从 MATLAB R2015a 开始,功能来自MATLAB编译器已与功能重新混合MATLAB生成器产品,而且还有一个新产品MATLAB 编译器 SDK.
自 R2015a 起,MATLAB编译器工作方式与上述相同(即加密、存档和打包,但不生成 C),但现在将打包为 .exe 和 Excel 加载项 (.xla)。在 R2015a 之前,此功能曾经存在于产品中适用于 Excel 的 MATLAB Builder EX.
自 R2015a 起,MATLAB编译器不再生成 .dll 组件。此功能已转移到新产品中MATLAB 编译器 SDK,其中还包括生成 .NET 程序集和 Java 类的功能。在 R2015a 之前,此功能曾经存在于产品中适用于 .NET 的 MATLAB Builder NE and 适用于 Java 的 MATLAB Builder JA.
换句话说:
在 R2014b 及以下版本中,我们有:
MATLAB编译器:生成.exe和.dll组件
适用于 .NET 的 MATLAB Builder NE:生成 .NET 程序集
适用于 Java 的 MATLAB Builder JA: 生成Java类
适用于 Microsoft Excel 的 MATLAB Builder EX:生成 Excel 插件。
在 R2015a 中,我们有:
MATLAB编译器:生成.exe和Excel插件
MATLAB 编译器 SDK:生成 .dll、.NET 程序集和 Java 类。
范围和用例MATLAB 编码器这些版本中没有变化(尽管有新功能)。
Edit:自 R2015b 起,MATLAB 编译器 SDK还生成 Python 包。
有关区分的附加信息适用于 C/C++ 的 MATLAB Coder 和 MATLAB Compiler 可在此处找到 http://www.mathworks.com/matlabcentral/answers/223937-should-i-use-matlab-compiler-sdk-or-matlab-coder-to-integrate-my-matlab-applications-with-c-c.
不同的比较表用于代码生成的 MATLAB 产品 https://www.mathworks.com/help/compiler/determining-if-matlab-compiler-is-the-right-tool.html.