matlab有matlabrc文件吗?

jml*_*pez 8 matlab path startup rc

今天我偶然发现了这个帖子:

http://www.mathworks.com/matlabcentral/newsreader/view_thread/112560

问题基本上是如何让Matlab读取你的startup.m文件,无论你在哪里开始你的matlab会话.

提供的解决方案之一是:

一个解决办法是要求系统管理员添加几行"matlabrc.m",增加了一些预先设定的文件夹中的用户的主目录到MATLAB路径(比如〜/ .matlabstart).然后每个用户可以在此文件夹中拥有自己的"startup.m"文件.

我最终在我的系统(OS X)中做的是添加一个startup.m文件:

/Applications/MATLAB_R2011a.app/toolbox/local/
Run Code Online (Sandbox Code Playgroud)

在这个startup.m文件中,我添加了:

if exist([getenv('HOME') '/.matlabrc/startup.m'])
    run([getenv('HOME') '/.matlabrc/startup.m']);
end
Run Code Online (Sandbox Code Playgroud)

这样用户可以选择创建隐藏文件夹~/.matlabrc,在其中可以放置文件startup.m.在这个启动文件中,无论他们启动Matlab的目录是什么,他们都可以告诉matlab什么时候执行它们.我添加到自己的个人startup.m文件中的一个例子是

addpath(genpath('/Users/jmlopez/matlabcode/'))
Run Code Online (Sandbox Code Playgroud)

现在我可以在该目录中添加任意数量的文件夹,并且每次我自动启动Matlab时都会将所有文件夹添加到路径中,而无需修改路径.

问题是:Matlab是否已经提供了一个特殊的文件,就像我创建的那样,或者我刚刚经历了所有这些麻烦来完成我想要的东西?如果答案是我给出的第二个选项,那么,Matlab为什么不提供这个?每当你没有管理员权限并且我不想将我的startup.m文件带到我去的每个目录时,将目录添加到Matlab路径是非常痛苦的.请问有人对此有所了解吗?

Gun*_*uyf 6

您可以将pathdef文件(存储您添加的所有路径)保存到自定义目录.但问题是,当matlab启动时,它不会自动知道您在上一个会话中使用的自定义目录.

但这就是MATLABPATH环境变量的用武之地.因为这允许自己设置matlab起始路径.在linux中,这可以通过在启动matlab之前设置此环境变量MATLABPATH来完成(从.bashrc /中的终端/ ...)

export MATLABPATH=$HOME/.matlab
Run Code Online (Sandbox Code Playgroud)

这样您就可以让所有用户拥有自己的pathdef文件,从而解决了在启动时必须手动添加的问题.

编辑

我测试了是否添加startup.m到MATLABPATH目录,即:matlab运行该启动文件?......确实如此.我认为它不适合你,因为在其他(更高优先级)目录(可能matlabroot)中有另一个startup.m文件,因此优先.我唯一的启动文件是在MATLABPATH中,所以只有一个选择.

EDIT2

不,我在matlabroot目录中添加了启动,但仍然在.matlab中我自己的启动文件运行.你确定在开始matlab之前正确设置了MATLABPATH吗?