MATLAB 与其他程序设计语言的比较
MATLAB是解释性语言,这与BASIC语言是一样的。这类语言对命令是边解释边执行,因而执行的速度比较慢,尤其是进行循环计算时。如果执行多次嵌套,则其执行速度会更慢,这会使整个程序的运行效率非常低,因而MATLAB是不太适合复杂的数值计算的。然而,MATLAB所拥有的“无所不能”的矩阵处理功能,“丰富多彩”的画图功能却是其他程序语言所不易拥有的。与此同时,其他的程序设计语言,如C/C++等是编译性语言,它们一经编译通过后,以二进制代码的方式执行,因而执行速度非常快,在进行多层次的嵌套循环运算时,就更能体现它们的优势。因此,通过把它们有机地结合起来,就能很好地发挥它们各自的优势。
早期的MATLAB版本是用FORTRAN语言编写的,现在的MATLAB版本都是用C语言编写的。由于MATLAB的库函数大都是用C语言编写的,因而在C/C++等语言中,调用快速执行的MEX函数,便能充分利用两者的长处,很好的实现特定功能。MEX函数是MATLAB中的动态链接函数库,就如同Windows中的DLL一样;MEX函数是一种动态链接的子程序,与MATLAB中的内置函数一样,能被MATLAB的解释器自动装入和执行。
MEX文件的使用
用C/C++等程序设计语言编写的函数或子程序,被编译成MEX文件形式后,就可以MATLAB中函数直接调用,而不必重新编写相应的M文件。
利用MEX文件,还可以调用其他的一些软件,如Windows中的用户界面资源,以扩大MATLAB的功能。
matlab难还是c语言难MATLAB在调用MEX文件时,除了运行速度快一点之外,其他方面与M文件没有差别。
在MEX源程序文件中,含有一个接口函数用来充当MATLAB与C/C++等程序设计语言的通道。
注意:对C/C++程序开发人员特别需要注意的是,MATLAB矩阵中的元素是按列存放的,与C/C++环境中的存储方式不同,因为C/C++中数组元素是按行存放的。
win7环境下,VS 2010调用matlab2010方法。先将m文件编译成动态库再使用VC调用,不是mex函数的方法,更加灵活。