[英]matlab script editing
我想在兩種情況下編輯matlab腳本
(1)在linux終端中運行的matlab命令窗口中,如何創建和編輯腳本文件? 采用
edit(filename)
將調用交互式編輯器,這在Linux服務器上運行時是不需要的。
(2)在emacs中,有沒有辦法方便地編輯matlab腳本? 哪個更好,使用MATLAB-Emacs還是EmacsLink?
當我試圖從http://sourceforge.net/scm/?type=cvs&group_id=154105 cvs checkout MATLAB-Emacs時,我應該指定哪個模塊名?
謝謝!
編輯:
安裝MATLAB-emacs時,存在一些問題。 我以為我的CEDET安裝在這里:
/usr/share/emacs22/site-lisp/cedet-common
/usr/share/emacs22/site-lisp/cedet-contrib
我的CEDET在Ubuntu上的版本1:1.0pre4-3(intrepid)。 所以我輸入命令:
$ make "LOADPATH=/usr/share/doc/cedet-common /usr/share/doc/cedet-contrib"
for loadpath in . /usr/share/doc/cedet-common /usr/share/doc/cedet-contrib; do \
echo "(add-to-list 'load-path \"$loadpath\")" >> autoloads-compile-script; \
done;
"emacs" -batch --no-site-file -l autoloads-compile-script -f cedet-batch-update-autoloads matlab-load.el .
Generatim autoloads for cedet-matlab.el...
Generatim autoloads for cedet-matlab.el...done
Generatim autoloads for matlab.el...
Generatim autoloads for matlab.el...done
Generatim autoloads for mlint.el...
Generatim autoloads for mlint.el...done
Generatim autoloads for semantic-matlab.el...
Generatim autoloads for semantic-matlab.el...done
Generatim autoloads for tlc.el...
Generatim autoloads for tlc.el...done
Generatim autoloads for semanticdb-matlab.el...
Generatim autoloads for semanticdb-matlab.el...done
Updatim header...
Updatim header...done
Wrote /home/tim/.emacs.d/matlab-emacs/matlab-load.el
make: *** No rule to make target `matlab-publish.el', needed by `lisp'. Stop.
怎么了? 謝謝!
你應該知道從版本R2009a EmacsLink開始已經從Matlab中刪除了,所以我想說在這一點上Matlab-Emacs是一個更好的選擇。 EmacsLink的主要優勢是更加緊密並與Matlab集成,特別是在使用調試器時,但當前版本的Matlab-Emacs非常強大,可能會滿足大多數人的需求,就像EmacsLink一樣。
為了從Matlab調用Emacs,最干凈的解決方案是運行Emacs服務器(Mx server-start)。 然后可以設置edit()命令以在Emacs中打開腳本。 這里提供了有關如何執行此操作以及將matlab-shell作為劣質進程運行的詳細說明:
http://blogs.mathworks.com/desktop/2009/09/14/matlab-emacs-integration-is-back/
關於CVS checkout:modulename是“matlab-emacs”。 您以前可以下載存檔,只需將其解壓縮到elisp目錄中即可。
編輯:我決定重新安裝matlab-emacs; 這是我所做的一步一步。 (這些步驟非常明顯,但這可能仍然有用,看看如何容易遇到編譯錯誤或誤解某些指令)。 請注意,在我重新安裝CEDET之前,matlab-emacs沒有編譯。
從http://cedet.sourceforge.net/下載CEDET(在我的例子中是1.0pre7)將存檔解壓縮到〜/ .emacs.d / elisp /(現在有〜/ .emacs.d / elisp / cedet-1.0pre7 /目錄)通過make EMACS=/usr/bin/emacs
編譯CEDET make EMACS=/usr/bin/emacs
在〜/ .emacs.d / elisp中,執行cvs checkout:
cvs -z3 -d:pserver:anonymous@matlab-emacs.cvs.sourceforge.net:/cvsroot/matlab-emacs co -P matlab-emacs
通過編譯matlab-emacs
make "LOADPATH=../cedet-1.0pre7/common ../cedet-1.0pre7/eieio ../cedet-1.0pre7/semantic/bovine/ ../cedet-1.0pre7/semantic/"
理想情況下,一切都應該編譯; 現在是編輯啟動文件的時候了:在.emacs中添加
(setq load-path (cons "~/.emacs.d/elisp/matlab-emacs/" load-path))
(load-library "matlab-load")
addpath('~/.emacs.d/elisp/matlab-emacs/toolbox','-begin');
rehash;
emacsinit;
應該這樣做! 啟動emacs,並執行Mx matlab-shell。 如果編輯foo.m沒有在emacs中打開foo.m,請確保已啟動服務器(Mx server-start)。
為了最有效率,您可能希望找出在從編輯緩沖區向matlab過程發送命令方面適合您的方法(在模式幫助中嘗試快捷方式)。 最后,如果你需要調試東西, dbstop in foo
做dbstop in foo
,當你運行foo時,你可以使用use dbstop family命令(查找它們)或打開工具欄(Mx工具欄模式)並使用那里的按鈕控制斷點,步進,繼續等。完成后,鍵入dbquit。
不幸的是,如果你在Windows上,matlab-shell不是一個選項(這有點令人驚訝,看看我如何在命令行下運行太陽下的其他所有東西 - Mathematica,R,numpy ......) - - 所以你對緊密emacs / matlab集成的選擇有些限制(除非你不介意運行支持emacslink的舊的matlab版本)。
http://matlab-emacs.sourceforge.net/上的matlab-emacs項目是MATLAB附帶的EmacsLink目錄中提供的稍微更新的Emacs腳本版本。 可以將matlab-emacs項目文件與MATLAB附帶的EmacsLink文件一起使用。 “modulename”是“matlab-emacs”。
我發了一篇關於如何在更新版本的MATLAB中使用Emacs和MATLAB的博客文章,其中刪除了EmacsLink支持。 你可以在這里閱讀它:
http://blogs.mathworks.com/desktop/2009/09/14/matlab-emacs-integration-is-back/
這里的腳本顯示了如何調整MATLAB以使用“emacsclient”,以便在已經運行的Emacs中提取文件。
編輯:
部署下載時,構建系統有點不完善。 matlab-publish沒有編譯的事實並不重要。
來自CVS的matlab-emacs代碼包含一個工具箱目錄,其中包含一些M代碼。 運行該代碼時,應設置MATLAB以使用emacsclient作為編輯器。 我針對最新的MATLAB編寫了emacsinit.m,因此您可能需要使用不支持所有功能的舊版MATLAB進行編輯。
要從matlab-shell運行emacsclient,應該自動設置路徑,它應該自動運行emacsclient。 如果你不使用matlab-shell,你需要將該目錄添加到MATLAB路徑,然后調用emacsinit。
如果它對編輯調用不起作用,那么我猜測舊的MATLAB沒有相同的配置功能。 您可以在啟用桌面的情況下啟動MATLAB,並使用“首選項”對話框將外部編輯器指定為emacsclient -n。
matlab-publish.el無法編譯的原因是因為它實際上沒有被MATLAB腳本dl_emacs_support.m下載(因此丟失)。 我還發現下載腳本也沒有下載company-matlab-shell.el ,它存在於CVS的tarball中。 因此,調用make時,如果找不到所需的文件,則會發生錯誤。
更糟糕的是,當通過在MATLAB中執行腳本來下載源文件時, dl_emacs_support.m腳本將替換為CVS中的文件。 因此,在下載文件后,對dl_emacs_support.m的修補程序或修改將丟失。
為了安全起見,我建議從CVS服務器上的tarball下載matlab-emacs,或者檢查源代碼。 匯編應該順利。
關於CEDET的評論 :我查看了CEDET源代碼,並且沒有任何汗水編譯它。 如果使用的是Ubuntu的,我相信在資源庫中的下列軟件包應該編制MATLAB的emacs的前安裝:CEDET常見 , 義德 ,EIEIO, 語義 ,speedbar。 這些軟件包安裝在/usr/share/emacs/site-lisp
,因此LOADPATH應為"/usr/share/emacs/site-lisp/cedet-common /usr/share/emacs/site-lisp/ede /usr/share/emacs/site-lisp/eieio /usr/share/emacs/site-lisp/semantic /usr/share/emacs/site-lisp/semantic/bovine"
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.