linux - matlab脚本编辑

标签 linux emacs matlab

我想在两种情况下编辑 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.    

怎么了?谢谢!

最佳答案

您应该知道,从版本 R2009 开始,EmacsLink 已从 Matlab 中删除,因此我认为此时 Matlab-Emacs 是更好的选择。 EmacsLink 的主要优势是与 Matlab 的集成更紧密,尤其是在使用调试器时,但当前版本的 Matlab-Emacs 功能强大,可能会像 EmacsLink 一样满足大多数人的需求。

为了从 Matlab 调用 Emacs,最干净的解决方案是运行 Emacs 服务器(M-x server-start)。然后可以设置 edit() 命令以在 Emacs 中打开脚本。此处提供了有关如何执行此操作以及将 matlab-shell 作为劣质进程运行的详细说明:

http://blogs.mathworks.com/desktop/2009/09/14/matlab-emacs-integration-is-back/

关于 CVS checkout :模块名称是“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 在 ~/.emacs.d/elisp 中,执行 cvs check out :

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's startup.m 中添加

addpath('~/.emacs.d/elisp/matlab-emacs/toolbox','-begin');
rehash;
emacsinit;

应该可以的!启动 emacs,然后执行 M-x matlab-shell。如果编辑 foo.m 没有在 emacs 中打开 foo.m,请确保服务器已启动 (M-x server-start)。

为了提高工作效率,您可能希望弄清楚从编辑缓冲区向 MATLAB 进程发送命令方面什么最适合您(使用模式帮助中的快捷方式进行试验)。最后,如果您需要调试东西,请执行 dbstop in foo,当您运行 foo 时,您可以使用 dbstop 系列命令(查找它们)或打开工具栏(M-x tool-bar-mode ) 并使用那里的按钮来控制断点、步进、继续等。完成后,键入 dbquit。

不幸的是,如果你在 Windows 上,matlab-shell 不是一个选项(这有点令人惊讶,看看我如何从命令行运行几乎所有其他东西——Mathematica、R、numpy.. .) -- 所以你对紧密的 emacs/matlab 集成的选择是有限的(除非你不介意运行支持 emacslink 的旧 matlab 版本)。

关于linux - matlab脚本编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2376178/

相关文章:

c++ - VS10/12 中的 Matlab Shared C/C++ lib 抛出很多异常

Linux crontab 不执行?

linux - 奥赛克 |如何添加异常(exception)规则

java - 在 linux 服务器上运行 Selenium WebDriver 测试

python - 在 Emacs 中配置新模式 : installing python-mode. el

emacs - 如何找到/设置暂存缓冲区位置?

r - 如何在 Emacs + ESS 中对 Rmarkdown 文档运行拼写检查?

matlab - 查找 MATLAB 数组中所有整数元素索引的优雅方法?

matlab - 将中间级别插入嵌套结构数组

脚本的 Python 配置文件