2011-12-26 93 views
2

我完全是Matlab中的新手 我想问,当我们在Matlab软件或IDE中编写程序并用 .m(点m)文件保存并编译并执行它时,那么.m(点m)文件被转换成哪个文件?我想知道这一点,因为我听说matlab是平台独立的,我做了谷歌这个,但我得到转换matlab文件到C,C++等 对不起,这个愚蠢的问题,并提前感谢。编译后的Matlab代码

+2

我建议你阅读文档:http://www.mathworks.co.uk/help/toolbox/compiler/index.html。 – 2011-12-26 14:03:21

回答

7

Matlab是interpreted language。所以在大多数情况下,没有持久的中间形式。然而,有被加密的中间形式称为pcode和也存在MATLAB编译器和编码器MATLAB它提供代码在其它高级语言(如C)

编辑: pcode不会自动生成,并应该是平台/版本独立。但它的主要目的是加密代码,而不是编译它(尽管它做了一些部分编译)。要使用pcode,您仍需要安装MATLAB环境,因此在很多方面它的行为与解释代码相似。

但是从你的后续问题我想你不太明白MATLAB的工作原理。代码被解释(尽管有一点即时编译),所以不需要持久的中间代码文件:表示代码的实际数据结构由MATLAB维护。与编译语言相反,开发周期类似于“编写代码,编译&链接,执行”,编译(实际:解释)步骤是执行的一部分,因此最终将以“编写代码,执行“在大多数情况下。

只是为了让您对编译器和解释器之间的差异有一个直观的理解。编译器将高级语言转换为低级语言(假设计算机可以执行的机器代码)。之后,编译代码(很可能存储在一个文件中)由您的计算机执行。另一方面,解释程序会逐个解释您的高级代码,在程序运行期间确定与高级代码对应的机器代码,并立即执行该机器代码。因此,没有必要让您的整个程序可以使用机器代码(因此在很多情况下,解释器不会存储整个机器代码,因为这只是浪费精力和空间)。

你可以像解释代码一样或多或少地看待解释:当你尝试手动确定某些代码的输出时,你需要逐行跟踪计算并跟踪结果。您通常不会将整个代码翻译成不同的格式,然后执行该代码。由于您不需要完整地翻译代码,因此不需要持久地存储中间表单。

正如我前面所说:你可以使用其他工具,如MATLAB coder到您的MATLAB代码转换为其他高语言如C/C++,或者您可以使用MATLAB compiler编译代码到取决于一些运行可执行形式库。但是这些仅用于非常特定的情况(例如,当您需要在没有MATLAB的计算机/嵌入式设备上部署MATLAB应用程序时,当您需要提高代码的性能时,...)

说明: My关于编译器和解释器的解释是对原型解释器和编译器的快速比较。许多真实案例介于两者之间,例如Java通常编译为(JVM)字节码,然后由JVM解释,并且可以对.NET语言及其CLR进行类似的描述。

+0

谢谢Egon .......但我想问一下,当我们执行我们的.m(点m)文件时,这个'p'代码会自动生成,或者我们必须明确地执行。 – 2011-12-28 09:09:50

+0

'p'代码不会自动生成,但我建议您远离'pcode'作为初学者。如果我上面的解释不够清楚,你可能会想看看编译和解释语言之间的区别。 – Egon 2011-12-28 12:25:50

+0

感谢Egon的详细解释。这真的很有帮助。 – 2011-12-28 13:16:14

1

由于MATLAB是一个解释器,您可以编写代码,只需从IDE执行它,无需编译。

如果您想部署您的程序,您可以使用MATLAB编译器创建一个独立的可执行文件或共享库,您可以在C++项目中使用它。在Windows上,MATLAB代码将分别编译为.EXE文件或.DLL文件。

+0

谢谢Victor May ........... – 2011-12-28 09:10:19