MATLAB的M文件、MEX文件、MAT文件是什么

MATLAB的M文件、MEX文件、MAT文件是什么,第1张

M文件就是最普通最常用的script文件。Matlab是一个解析执行的高级语言,所有的命令都是script。具体很难描述,有点像DOS中的bat文件,或者是Linux中的shell

script。

MAT文件是matlab的数据文件,用于存储matlab的变量。可以使用save命令将一个或多个变量存储到一个MAT文件中。

MEX文件是matlab的可执行文件。Matlab是解释执行的,没有自己的编译器。但是,它能够结合外部的编译器来编译和连接程序,而这个编译连接之后的输出就是一个MEX文件。例如,Matlab可以调用VC2008的编译器来编译和连接一个用C/C++编写的程序,生成相应的MEX文件,而该MEX文件可直接在Matlab中像使用M文件一样的被调用。

我也是最近才搞定的这个问题,按下述步骤进行,就没有问题,我已经运行成功,但是遇到你程序的bug的话,便会出现错误,关闭整个程序\x0d\x0a希望这些对你有用\x0d\x0a\x0d\x0a如何将MATLAB程序编译成独立可执行的程序?如何将编译好的独立可执行程序发布在没有安装MATLAB的电脑上?下面将一步步实现:\x0d\x0a\x0d\x0a一、生成独立可执行的程序(exe文件)步骤\x0d\x0a\x0d\x0a1、安装编译器。可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0,我基于VS 2003实现。\x0d\x0a 2、设置编译器。在matlab命令行输入mbuild _setup以及mex _setup,选择安装的c编译器。\x0d\x0a 3、调用编译器。此处使用MATLAB下的一个GUI平台deploytool下完全实现。在命令窗口输入deploytool即可看到。具体使用方法请Help。\x0d\x0a当然,也可以输入mcc -m filaname, filaname为要转成exe的m文件;\x0d\x0a注:在以前的版本中,用编译命令mcc -B sglcpp filaname;自2006的版本后,替换为mcc -mfilaname;\x0d\x0a 4、安装\toolbox\compiler\deploy\win32目录下的MCRInstaller。\x0d\x0a\x0d\x0a二、脱离matlab运行可执行程序\x0d\x0aMCR是由matlab的运行环境,占用不到300M的对于用不同matlab版本生成的exe文件,MCR版本也会有不同,因此,在程序打包时,最好将相应版本的MCR一起打包。MCR环境的设置文件存放目录如下:\x0d\x0a\toolbox\compiler\deploy\win32\x0d\x0a文件名为MCRInstaller.exe。可将其拷贝到自己的文件夹中,(7.0以前的版本是mglinstaller.exe)。\x0d\x0a在MATLAB里运行可执行程序的办法是在前面加一个!,比如:!picshow,后缀名可有可无。\x0d\x0a在其它没有安装matlab的机器上运行exe文件前:\x0d\x0a首先安装matlab的运行环境。在同一机器上可以并存不同版本的matlab环境(换句话说不同版本不兼容)。\x0d\x0a其次是要将“MCRinstaller.exe安装目录\runtime\win32”这个路径添加到该计算机的环境变量中,通常是自动加载。\x0d\x0a如果没有,也可手动安装,添加的方法是:\x0d\x0a右击“我的电脑”“属性”“高级”“环境变量”“添加”指定一个变量名,然后将上述路径复制到里面就可以了。\x0d\x0a注:在安装过程中会d出让安装Microsoft.NETFramework可以不用安装。\x0d\x0a最后就是将编译生成的相相关文件拷贝到同一目录下,双击即可运行。\x0d\x0a问题:目前此方法可完全运行在没有安装MATLAB以及C/C++的电脑上,但是如果是在AMD的CPU可以运行,但是不会出现任何MATLAB编译的界面。\x0d\x0a美中不足就是,运行的时候dos的那个黑色地窗口一直存在。下面将实现去除黑屏的办法:\x0d\x0a\x0d\x0a消除运行MATLAB生成的exe程序的dos黑屏的办法\x0d\x0a基于MATLAB生成exe文件后,每次运行都存在dos黑屏的问题,现在可以通过以下方法解决:\x0d\x0a方法一: 在命令窗口输入:\x0d\x0acd(prefdir) \x0d\x0aedit compopts.bat\x0d\x0a在打开的文件最后添加以下语句:\x0d\x0a\x0d\x0aA.VC环境下:\x0d\x0a\x0d\x0a set LINKFLAGS=%LINKFLAGS%/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup \x0d\x0a\x0d\x0aB.LCC环境下:\x0d\x0a set LINKFLAGS=%LINKFLAGS% -subsystemwindows

介绍如下:

要将用Matlab语言编写的函数文件编译成可独立执行的*.exe文件(即可脱离Matalab环境的执行程序),首先要安装和配置好Matlab Compiler,一般来说,在安装Matlab时就已经安装了相应版本的Matlab Compiler。只是不同版本的Matlab,其编译器的使用方法有一定的差异,这一点要引起一定的注意。

在确定安装好Matlab Compiler后,还需要对Compiler进行适当的配置,方法是在Matlab命令窗口输入:

Mbuild –setup

然后根据提示执行相应的 *** 作,使用者可根据自己计算机中现有编译器的情况选择合适的编译器,如VC++ 6.0、VC++7.0、Bland C的编译器等,目前Matlab好象还不支持VC++8.0(我计算机安装的就是VC++2005,Matlab就无法识别)。当然,如果你的计算机里根本就没有安装其他任何语言的编译器,也可选择Matlab自带的Lcc编译器,其实这个编译器对大多数用户已经够用了(我就是选择的Matlab自带的Lcc编译器)。

配置好编译器后,自然就是对自己编写的M文件进行编译了。

将M文件编译为独立可执行文件的语法是:

>>mcc –m fun1.m fun2.m…..

其中fun1就是最后的可执行文件的名称。

另外,也可通过采用命令开关-o指定编译最终目标文件的名称,如 mcc –m main.m –o mrank_main,就是将编译后的文件指定为mrank_main.exe。

编译后的生成文件根据编译器的版本不同而不同。具体的可参阅相关资料。

如果要在没有安装matlab的计算机上执行编译后的程序,首先要将\MATLAB701\toolbox\compiler\deploy\win32中的MCRinstaller.exe安装到该计算机上(7.0以前的版本是mglinstaller.exe)。

其次是要将“MCRinstaller.exe安装目录\runtime\win32”这个路径添加到该计算机的环境变量中,添加的方法是:

右击“我的电脑”“属性”“高级”“环境变量”“添加”指定一个变量名,然后将上述路径复制到里面就可以了。

第三步是将编译生成的相相关文件拷贝到同一目录下(当然其他目录亦可)。

第四步是打开MS-dos *** 作窗口,进入到编译后的*.exe程序所在的目录,执行编译生成的*.exe文件即可。

需要说明的一个问题:

如果你的程序还附带有图片(如Version上的图标)、Web页面(如help文档),在编译的时候可能无法与M文件一起编译(因为我没有试过,也没有看到有关这方面的介绍),这没有关系,先在计算机上执行一次你编译后生成的独立可执行文件,这时在同一目录下会生成一个以你编译后的程序名+_mcr结尾的文件夹,这时,你只需要把与程序相关的图标和Web页面拷贝到该文件夹中的Matlabprogram下面的一个子目录(一般与用于编译的文件夹名相同)中即可。

其他的方法还有:(以下是网上搜索到的方法,没有试验过,有兴趣的朋友可以试一试)

方法一:在matlab下的workspace里打comtool,点file-open project将我们先前建好的comtest.cbl工程文件打开,再点component--package component就实现了打包,此时到comtest\distrib文件夹里看,生成的comtest.exe就是打包后的解压程序,双击它会解压出一些文件,再点击解压出来的_install.bat就可以实现安装

方法二:如何将gui生成exe ?

已有gui.m文件和gui.fig文件

1 在matlab的command窗口中输入

mcc -B sgl GUI.m

2.将上步生成的文件包括*.m 文件和*.fig文件一起考到待运行的机器

此时仍需matlab所必需的动态连接库。

3. 将 <matlab path >/extern/lib/win32/mglinstallar.exel拷贝到到待运行机器上

4.在机器上先运行mglinstallar.exe, 然后选择解压目录,将在指定目录下解压缩出bin和toolbox两子目录,其中在bin\win32目录下就是数学库和图形库脱离MATLAB运行所需的所有动态连接库,共有37个。可以将这些.dll考入system32, 也可以直接放在应用程序目录下。而toolbox目录则必须与应用程序同一目录。

5.大功告成。

方法三:运行mcc -B sgl GUI.m 生成exe文件,把GUI.exe文件和GUI.ctf文件拷贝到目标电脑上,然后在目标电脑上安装 MCRInstaller.exe ,安装完以后,我点击GUI.exe,它显示:this application has requested the Runtime to terminate it in an unusual way。这个可能是哪里出错了呢?

Solution:

The segmentation violation can be caused due to a corruption in either the profile of the current user or by corrupted Windows libraries. In order to determine which is the cause, try logging in as a different username and run MATLAB.

If you are able to successfully launch MATLAB under a different username:

1. Log onto the machine, as the user that is receiving the error.

2. On your desktop, click on Start >Run

3. Type "regedit" in the Open text field and click OK, this will bring up the Registry Editor

4. In the Registry Editor expand the following folders: HKEY_CURRENT_USER >Software >MathWorks >Matlab

5. Under the MATLAB key, find the folder having the same name as the version number of the MATLAB that is crashingand delete it. This Registry key will be regenerated the next time MATLAB is started.

Click on the link below to view an image of the Registry Editor, which shows how to delete a registry key for MATLAB 6.5 (R13).

After following these steps, you should be able to launch MATLAB successfully.

If MATLAB crashes regardless of the user who is logged in, the crash may be caused by corrupted system libraries. For Windows NT, 2000, or XP, some customers have found that reinstalling Windows Service Packs have resolved the issue


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11507840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存