编译后的Matlab代码

Ram*_*oni 2 matlab

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

Ego*_*gon 9

Matlab是一种解释性语言.所以在大多数情况下,没有持久的中间形式.但是,有一个称为加密的中间形式pcode,还有MATLAB编译器和MATLAB编码器,它可以用其他高级语言(如C语言)提供代码.

编辑: pcode不是自动生成的,应该是平台/版本无关的.但它的主要目的是加密代码,而不是编译它(尽管它做了一些部分编译).要使用pcode,您仍然需要安装MATLAB环境,因此在很多方面它都像解释代码一样.

但是根据你的后续问题,我猜你还不太了解MATLAB的工作原理.代码得到解释(尽管有一些即时编译),因此不需要持久的中间代码文件:表示代码的实际数据结构由MATLAB维护.与编译语言相比,您的开发周期类似于"编写代码,编译和链接,执行",编译(实际:解释)步骤是执行的一部分,因此您最终会得到"编写代码,执行"大多数情况.

只是为了让您直观地了解编译器和解释器之间的区别.编译器将高级语言翻译成较低级别的语言(假设您的计算机可以执行机器代码).之后,您的计算机将执行已编译的代码(很可能存储在文件中).另一方面,解释器逐段解释您的高级代码,确定在程序运行期间哪些机器代码对应于高级代码并立即执行该机器代码.因此,没有必要提供相当于整个程序的机器代码(因此在许多情况下,解释器不会存储整个机器代码,因为这只是浪费的精力和空间).

您可以或多或少地看一下人类解释代码的解释:当您尝试手动确定某些代码的输出时,您会逐行跟踪计算并跟踪结果.您通常不会将整个代码转换为某种不同的形式,然后执行该代码.由于您不完全翻译代码,因此无需持久存储中间表单.

如上所述:您可以使用其他工具(如MATLAB编码器)将MATLAB代码转换为其他高级语言(如C/C++),或者您可以使用MATLAB编译器将代码编译为依赖于某些运行时库的可执行形式.但这些仅用于非常特殊的情况(例如,当您需要在没有MATLAB的计算机/嵌入式设备上部署MATLAB应用程序时,需要提高代码性能时......)

注意:我对编译器和解释器的解释是对原型解释器和编译器的快速比较.许多真实案例介于两者之间,例如Java通常编译为(JVM)字节码,然后由JVM解释,类似于.NET语言及其CLR.