m文件必须在Matlab环境下才能运行。如果想在未安装Matlab的机器上运行Matlab程序,就需要将m文件打包成exe可执行文件。
在Matlab 2006上的打包步骤:
1. 在Matlab命令行运行mcc -m xxx,xxx是m文件的名字。这里要求m文件是函数程序而不是过程程序。这个命令如果运行成功,会在当前目录生成一个log文件,以及xxx.ctf, xxx.exe, xxx_main.c, xxx_mcc_component_data.c等文件。
2. 在Matlab程序目录的toolbox\compiler\deploy\win32子目录找到MCRInstaller.exe文件,连同xxx.ctf, xxx.m, xxx.exe复制到未安装Matlab的机器上。
3. 在目标机器上运行MCRInstaller.exe。安装完毕后,将"[MCR的安装目录]\runtime\win32"添加为环境变量(“我的电脑”“属性”“高级”“环境变量”“添加”)。
4. 此时运行xxx.exe即可。
注意:rand函数在Matlab环境和exe中执行的效果不同。在Matlab环境中,每次执行都会生出不同的随机数,而在exe文件的执行中,每次得到相同的随机数。原因可能是Matlab到c程序的转化中的bug。解决方法是,每次调用rand函数之前,加上state设定语句,比如rand('state',sum(100*clock))。其中clock表示系统当前时间,保证每次设定的state不同。