作者:蘑菇雪雪_585 | 来源:互联网 | 2023-07-27 20:24
我想在两种情况下编辑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服务器(M-x 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
在?/ .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’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过程发送命令方面适合您的方法(在模式帮助中尝试快捷方式).最后,如果你需要调试东西,在foo中做dbstop,当你运行foo时,你可以使用use dbstop family命令(查找它们)或打开工具栏(Mx工具栏模式)并使用那里的按钮控制断点,步进,继续等.完成后,键入dbquit.
不幸的是,如果你在Windows上,matlab-shell不是一个选项(这有点令人惊讶,看看我如何在命令行下运行太阳下的其他所有东西 – Mathematica,R,numpy ……) – – 所以你对紧密emacs / matlab集成的选择有些限制(除非你不介意运行支持emacslink的旧的matlab版本).