matlab在命令行中运行很好,存成m文件就不行,怎么办? matlab中,命令可以运行,但是到m文件里就不行了,为什么...
matlab\u4e2d\uff0c\u5728\u547d\u4ee4\u7a97\u53e3\u53ef\u4ee5\u8fd0\u884c\u7684\u4ee3\u7801\u4e3a\u4ec0\u4e48\u590d\u5236\u5230m\u6587\u4ef6\u5c31\u65e0\u6cd5\u8fd0\u884c\u4e86\uff1f\u590d\u5236\u5230\u6587\u4ef6\u4e5f\u6ca1\u95ee\u9898\u554a\u3002
\u811a\u672c\u5c31\u662f\u547d\u4ee4\u7684\u5e8f\u5217\uff0c\u5728\u547d\u4ee4\u7a97\u53e3\u80fd\u8fd0\u884c\u7684\u4ee3\u7801\uff0c\u4fdd\u5b58\u6210\u811a\u672c\u6587\u4ef6\u4e0d\u53ef\u80fd\u4e0d\u884c\u7684\u3002
m\u6587\u4ef6\u91cc\u4e0d\u8981">>",\u628a\u6bcf\u4e00\u884c\u524d\u9762\u7684">>"\u90fd\u5220\u6389
我也是最近才搞定的这个问题,按下述步骤进行,就没有问题,我已经运行成功,但是遇到你程序的bug的话,便会出现错误,关闭整个程序
希望这些对你有用
如何将MATLAB程序编译成独立可执行的程序?如何将编译好的独立可执行程序发布在没有安装MATLAB的电脑上?下面将一步步实现:
一、生成独立可执行的程序(exe文件)步骤
1、安装编译器。可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0,我基于VS 2003实现。
2、设置编译器。在matlab命令行输入mbuild –setup以及mex –setup,选择安装的c编译器。
3、调用编译器。此处使用MATLAB下的一个GUI平台deploytool下完全实现。在命令窗口输入deploytool即可看到。具体使用方法请Help。
当然,也可以输入mcc -m filaname, filaname为要转成exe的m文件;
注:在以前的版本中,用编译命令mcc -B sglcpp filaname;自2006的版本后,替换为mcc -mfilaname;
4、安装<matlab path>\toolbox\compiler\deploy\win32目录下的MCRInstaller。
二、脱离matlab运行可执行程序
MCR是由matlab的运行环境,占用不到300M的对于用不同matlab版本生成的exe文件,MCR版本也会有不同,因此,在程序打包时,最好将相应版本的MCR一起打包。MCR环境的设置文件存放目录如下:
<matlab path> \toolbox\compiler\deploy\win32
文件名为MCRInstaller.exe。可将其拷贝到自己的文件夹中,(7.0以前的版本是mglinstaller.exe)。
在MATLAB里运行可执行程序的办法是在前面加一个!,比如:!picshow,后缀名可有可无。
在其它没有安装matlab的机器上运行exe文件前:
首先安装matlab的运行环境。在同一机器上可以并存不同版本的matlab环境(换句话说不同版本不兼容)。
其次是要将“MCRinstaller.exe安装目录\runtime\win32”这个路径添加到该计算机的环境变量中,通常是自动加载。
如果没有,也可手动安装,添加的方法是:
右击“我的电脑”“属性”“高级”“环境变量”“添加”指定一个变量名,然后将上述路径复制到里面就可以了。
注:在安装过程中会弹出让安装Microsoft.NETFramework可以不用安装。
最后就是将编译生成的相相关文件拷贝到同一目录下,双击即可运行。
问题:目前此方法可完全运行在没有安装MATLAB以及C/C++的电脑上,但是如果是在AMD的CPU可以运行,但是不会出现任何MATLAB编译的界面。
美中不足就是,运行的时候dos的那个黑色地窗口一直存在。下面将实现去除黑屏的办法:
消除运行MATLAB生成的exe程序的dos黑屏的办法
基于MATLAB生成exe文件后,每次运行都存在dos黑屏的问题,现在可以通过以下方法解决:
方法一: 在命令窗口输入:
cd(prefdir)
edit compopts.bat
在打开的文件最后添加以下语句:
A.VC环境下:
set LINKFLAGS=%LINKFLAGS%/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup
B.LCC环境下:
set LINKFLAGS=%LINKFLAGS% -subsystemwindows
C. Borland:
set LINKFLAGS=%LINKFLAGS% -aa
保存以后,再重新编译m文件,生成的exe文件运行起来就没有dos窗口了
方法二:使用suppress工具:
下载附件中的suppress压缩包后解压,(当然您可以自己去Google然后再下载)会看到一个suppress.ini文件,用记事本打开,然后将 其中“Name=test.exe”中text.exe的改为你生成的exe文件名。将suppress.exe(有个关盘和显示器的图标),改后的 suppress.ini放到你生成的exe的同目录下。执行suppress.exe或者您自己生成的exe可以了。当然您可以自己修改 suppress.exe的名字,改为您自己想要的名字。
其中的方法一在使用后生成的exe再到没有任何安装MATLAB的机子上运行也不会有黑屏了。
方法二的缺点就是要同时存在您生成的exe以及supress.exe,必须在同一目录下。
是不是m文件的名字有问题?存成非数字打头的试试
设置断点,单步调试,看看是哪出错了
绛旓細鍙渶瑕佸湪linux鐨鍛戒护琛涓嬫墽琛岋細 matlab -nodesktop -nosplash -r 鈥滀綘鐨勭▼搴忕殑鍚嶅瓧鈥 锛堝墠鎻愭槸matlab鎵鍦ㄧ殑鐩綍鍦ㄤ綘鐨凱ATH鍙橀噺鍖呭惈鐨勭洰褰曚腑锛
绛旓細鍦ㄨ蒋浠跺乏涓婅浣嶇疆涓殑 鐐瑰嚮 鏂板缓锛屼箣鍚庡嵆鍙柊寤鸿剼鏈紝鍑芥暟绛夋枃浠讹紝杩欓噷閫夋嫨鏂囦欢锛屼箣鍚庡皢浼氬嚭鐜板鍥炬墍绀虹殑鍑芥暟鐨勫熀鏈舰寮忥紝function鍑芥暟鐨勫熀鏈舰寮忥紝缂栬緫瀹屾垚鍚庯紝鍙灏嗗嚱鏁板悕杈撳叆鍒板懡浠よ涓鍗冲彲杩涜浣跨敤銆傝鐐瑰嚮杈撳叆鍥剧墖鎻忚堪 璇风偣鍑昏緭鍏ュ浘鐗囨弿杩 simulink浠跨湡锛氳繖鏄matlab涓敤浜庝豢鐪熷疄楠岀殑妯″潡锛岀偣鍑诲鍥炬墍绀轰綅缃...
绛旓細MATLAB鐨勫懡浠よ绐楀彛涓嶄粎鍙互鍐呭祵鍦∕ATLAB鐨勭敤鎴风晫闈腑锛岃繕鍙互娴姩鍦ㄧ晫闈笂锛屽崟鍑鍛戒护琛岀獥鍙d笂鐨勬寜閽紝灏卞彲浠ユ诞鍔ㄥ懡浠よ绐楀彛銆傝ˉ鍏咃細甯屾湜浣犲彲浠ラ夋垜绛旀涓烘弧鎰忥紝璋㈣阿锛
绛旓細涓轰簡MATLAB鑳杩愯C++缂栬瘧鐨勭▼搴忥紝鎴戦渶瑕佸畨瑁匰DK锛涗负浜嗗畨瑁匰DK锛屾垜瀹夎浜哣S2013锛涗负浜嗗畨瑁匳S2013锛屾垜鍗囩骇浜哤indows7鍒sp1.绛夊埌涓鍒囨悶瀹氾紝缁堜簬鍙互鐢∕ATLAB璋冪敤C++鐨勪唬鐮佸悗锛宮iscrosoft office2013涓嶈兘鐢ㄤ簡锛涗慨澶嶅畬offic2013鍚庯紝鍐嶆璋冪敤绋嬪簭锛孧ATLAB寮瑰嚭鈥樺皾璇曞皢script XXX.m浣滀负鍑芥暟鎵ц鈥欍
绛旓細matlab鍛戒护绐楀彛锛matlab鍛戒护琛鎻愮ず绗﹀簲璇ユ槸K>>,琛ㄧず涓鸿皟璇曠姸鎬侊紝鐢keboard鍛戒护锛屽彲浠ヨ繘鍏ヨ鐘舵侊紝鐢╠bquit鍛戒护鍙互閫鍑鸿鐘舵併俹k锛
绛旓細鍙互銆傛寜F5 缁х画杩愯绋嬪簭/璋冭瘯妯″紡锛屾寜F10鍙互鍗曟杩愯璋冭瘯锛屼篃鍙湪Debug鑿滃崟涓嬪拰宸ュ叿鏉★紙绗竴鏉★級涓壘鍒般Matlab涓鐨勫父鐢ㄥ揩鎹烽敭 涓銆鍦ㄥ懡浠ょ獥鍙(Command Window)涓細锛1锛夆啈銆佲啌鈥斺斿垏鎹㈠埌涔嬪墠銆佷箣鍚庤繍琛岃繃鐨勫懡浠わ紝鍙互閲嶅鎸夊娆℃潵杈惧埌浣犳兂瑕佺殑鍛戒护锛涳紙2锛塗ab鈥斺旇嚜鍔ㄨˉ鍏ㄣ傚湪command绐楀彛锛岃緭鍏ヤ竴涓...
绛旓細鎶matlab鐨缂栬緫鍣ㄦ斁鍛戒护琛岀獥鍙d腑闂寸殑鎿嶄綔鏄:1銆佸湪鑴氭湰鏂囦欢鍙充笂瑙掑ぇ鍙変笅闈紝鎵惧埌鏈変釜绫讳技浜巈xcel鐨勯噸鍋氭寜閽2銆侀紶鏍囨斁涓婂幓灏辨樉绀衡淒ock鈥濓紝鐐逛竴涓嬪氨濂戒簡銆傜紪杈戝櫒鍙兘閫氳繃鐐杩愯鎴栬呴変腑瑕佺敤鐨勪唬鐮佸悗鍙抽敭鈥滄墽琛屾墍閫変唬鐮佲濇垨鑰鍦ㄥ懡浠よ绐楀彛涓杈撳叆鏂囦欢鍚嶇殑鏂瑰紡杩愯銆
绛旓細Simulink 鐨 save to workspace 妯″潡缁忓父寰楀埌涓涓 [m x 1 x n] 鐨勪笁缁寸煩闃碉紝鐩存帴浣跨敤闈炲父涓嶄究銆備娇鐢 squeeze 鍚庯紝浼氬皢鍏惰浆鎹负 [m x n] 鐨勪簩缁寸煩闃点6. 浠g爜杩愯鑰楁椂鏄剧ずtic; some_code_to_run(); toc tic/toc 浼氬湪 Matlab 鍛戒护琛屼腑鎵撳嵃鍑轰袱鏉″懡浠や箣闂寸殑浠g爜鐨勮繍琛岃楁椂銆傛洿璇︾粏鐨勪唬鐮佹晥鐜...
绛旓細濡傛灉姣忎釜.m鏂囦欢閮芥湁syms A锛屼竴鑸笉浼氱浉浜掑共鎵般備絾鏈濂借繕鏄垎鍒懡鍚嶅彉閲忥紝濡侫1銆丄2銆傚洜涓虹浉鍚屽彉閲忥紝鏈夋椂鍊欒皟璇曠▼搴忓嚭鐜伴棶棰橈紝鍒ゆ柇闂鍦ㄤ粈涔堝湴鏂瑰嚭閿欐瘮杈冨洶闅句竴浜涖
绛旓細瑕佸垹闄ら敊璇懡浠よ鍙互灏濊瘯浠ヤ笅涓ょ鏂规硶鏉ュ垹闄わ細鏂规硶涓锛鍦ㄥ懡浠ょ獥鍙d腑杈撳叆浜嗛敊璇殑鍛戒护锛岃繖涓敊璇殑鍛戒护鍙兘鏃犳硶鎵ц锛屼絾鏄粬浼氬湪鍓嶉潰鏈夋樉绀猴紝濡傛灉鎯虫妸鍛戒护绐楀彛涓殑鎵ц杩囩殑鍛戒护锛堝寘鎷敊璇拰姝g‘鐨勶級閮藉垹闄ょ殑璇濓紝灏卞湪鍛戒护绐楀彛涓緭鍏lear锛岀劧鍚庡洖杞﹀氨鍙互浜嗐傝繖涓懡浠や細鎶婂湪鍛戒护绐楀彛涓緭鍏ヨ繃鐨勫懡浠ゆ竻绌猴紝浣嗘槸...