簡體   English   中英

matlab腳本編輯

[英]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")

matlab的startup.m中添加

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 foodbstop 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM