8

今天偶然发现了这个话题:

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/

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

if exist([getenv('HOME') '/.matlabrc/startup.m'])
    run([getenv('HOME') '/.matlabrc/startup.m']);
end

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

addpath(genpath('/Users/jmlopez/matlabcode/'))

现在我可以在该目录中添加尽可能多的文件夹,并且每次我自动启动 Matlab 时,所有文件夹都将添加到路径中,而无需修改路径。

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

4

1 回答 1

6

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

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

export MATLABPATH=$HOME/.matlab

这样就可以让所有用户都有自己的pathdef文件,解决了启动时必须手动添加的问题。

编辑

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

编辑2

不,我将启动添加到 matlabroot 目录,并且我自己在 .matlab 中的启动文件仍然可以运行。您确定在启动 matlab 之前正确设置了 MATLABPATH 吗?

于 2012-06-16T17:37:35.097 回答