matlab脚本编辑

我想在两种情况下编辑matlab脚本

(1)在matlab命令窗口中运行一个linuxterminal,如何创build和编辑脚本文件? 使用

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)。 所以我input命令:

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

怎么了? 谢谢!

Solutions Collecting From Web of "matlab脚本编辑"

你应该知道,从版本R2009a开始EmacsLink已经从Matlab中删除了,所以我想说的是在这一点上,Matlab-Emacs是一个更好的选择。 EmacsLink的主要优势是与Matlab紧密集成,特别是在使用调试器的时候,但是当前版本的Matlab-Emacs功能非常强大,并且可能和EmacsLink一样满足大多数人的需求。

为了从Matlab调用Emacs,最简洁的解决方案是运行Emacs服务器(Mx服务器启动)。 然后可以设置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在〜/ .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服务器启动)。

为了提高工作效率,您可能希望从编辑缓冲区向matlab进程发送命令(试用模式帮助中的快捷方式),找出适合您的方法。 最后,如果你需要调试的东西, dbstop in foo执行dbstop in foo ,当你运行foo的时候,你可以使用dbstop family命令(查看它们)或打开工具栏(Mx工具栏模式)并使用那里的按钮控制断点,步进,继续等。完成后,键入dbquit。

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

http://matlab-emacs.sourceforge.net/中的matlab-emacs项目是MATLAB随附的EmacsLink目录中的Emacs脚本的稍微更新的版本。 使用matlab-emacs项目文件和MATLAB自带的EmacsLink文件是可以的。 “modulename”是“matlab-emacs”。

我写了一篇关于如何在MATLAB的更新版本的MATLAB中使用Emacs的博客文章,其中EmacsLink支持被删除。 你可以在这里阅读它:

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

这里的脚本展示了如何调整MATLAB来使用“emacsclient”,以便在已经运行的Emacs中拉取文件。

编辑:

构建系统与部分下载有点不完善。 matlab发布没有编译的事实并不重要。

来自CVS的matlab-emacs代码包含一个带有一些M代码的工具箱目录。 当你运行这个代码时,它应该设置MATLAB来使用emacsclient作为编辑器。 我写了emacsinit.m对最新的MATLAB,所以你可能需要用旧的MATLAB不支持所有功能编辑它。

要从matlab-shell运行emacsclient,路径应该自动设置,并且应该自动运行emacsclient。 如果你不使用matlab-shell,你需要把这个目录添加到你的MATLAB路径中,然后调用emacsinit。

如果它不适用于调用编辑,那么我猜测一个较旧的MATLAB不具有相同的配置功能。 您可以在启用桌面的情况下启动MATLAB一次,然后使用“首选项”对话框将外部编辑器指定为emacsclient -n。

matlab-publish.el不能编译的原因是因为MATLAB脚本dl_emacs_support.m没有下载(因此没有)。 我还发现下载脚本也没有下载CVS压缩包中存在的company-matlab-shell.el 。 因此,调用make时,如果找不到所需的文件,则会发生错误。

更糟糕的是,当通过在MATLAB中执行脚本来下载源文件时, dl_emacs_support.m脚本被替换为来自CVS的文件。 下载文件后,修补程序或修改dl_emacs_support.m因此丢失。

为了安全起见,我建议从CVS服务器上的tarball下载matlab-emacs,或者检查源代码。 那编辑应该会顺利的。

备注关于CEDET :我检查了CEDET的源代码,并没有汗水编译它。 如果您使用的是Ubuntu,我相信在编译matlab-emacs之前,应该先安装以下软件包: cedet-commonedeeieiosemanticspeedbar 。 这些软件包安装到/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"