MATLAB编译器将您的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编译器是为您想要简单而(相对)直接地与没有MATLAB副本的人分享已编写的MATLAB应用程序的用例而设计的。由于部署的.m
代码是加密的,因此还可以用于共享MATLAB代码并保护知识产权。
MATLAB Coder具有其他用途,例如希望通过转换为mex文件加快MATLAB代码或需要为另一个应用程序或嵌入式设备生成C代码。
如果您有更详细的问题,我真的建议您打电话给MathWorks并询问他们。
编辑:上述信息适用于 MATLAB R2014b及以下版本。从 MATLAB R2015a开始,来自 MATLAB Compiler 的功能已与来自 MATLAB Builder 产品的功能混合,并且还有一个新产品 MATLAB Compiler SDK。
从R2015a开始,MATLAB Compiler 的工作方式与上述描述相同(即加密、归档和打包,但不生成C代码),但现在将其打包为 .exe 和 Excel 添加项 (.xla)。在R2015a之前,这个功能曾经存在于产品 MATLAB Builder EX for Excel 中。
从R2015a开始,MATLAB Compiler 不再生成 .dll 组件。这个功能已经移动到新产品 MATLAB Compiler SDK 中,该产品还包括生成 .NET 程序集和 Java 类的功能。在R2015a之前,这个功能曾经存在于产品 MATLAB Builder NE for .NET 和 MATLAB Builder JA for Java 中。
换句话说:
在R2014b及以下版本中,我们有:
MATLAB Compiler: 生成 .exe 和 .dll 组件
MATLAB Builder NE for .NET: 生成 .NET 程序集
MATLAB Builder JA for Java: 生成 Java 类
MATLAB Builder EX for Microsoft Excel: 生成 Excel 添加项。
在R2015a中,我们有:
MATLAB Compiler: 生成 .exe 和 Excel 添加项
MATLAB Compiler SDK: 生成 .dll、.NET 程序集和 Java 类。
MATLAB Coder 的范围和用例在这些版本中没有改变(尽管有新功能)。
编辑:从R2015b开始,MATLAB Compiler SDK 还可以生成 Python 包。
有关区分MATLAB Coder和MATLAB Compiler for C/C++的更多信息,请单击此处。
不同MATLAB产品代码生成的比较表。