startup.m应该放在哪里?

39
我在 MATLAB 文档中寻找答案已经很久了。例如,在这里:http://www.mathworks.com/help/matlab/matlab_env/changing-the-startup-folder.html 底部说:“使用 startup.m 文件指定启动文件夹...”,但这显然是荒谬的,因为其他地方的文档说 startup.m 文件可以在所谓的 "startup 文件夹" 中找到,因此该文件无法指定该文件夹的位置。所有我在关于 startup.m 的文件中找到的信息都充斥着这种循环性。我想知道的是:我是否可以自定义 "启动文件夹" 的位置,以使其保持不变,如果可以,该持久信息存储在哪里?

6
我完全同意循环性问题,我想这是由于操作系统的多样性所致!您可以通过在每个文档页面右下角回答“NO”来提交有关文档的反馈/更新请求(这是有效的)。还请注意,“在 MATLAB 启动文件中指定启动选项”中提到要将“startup.m”文件放置在默认或当前启动文件夹中,这是 MATLAB 首先查找它的地方...... 在某种程度上,由“userpath”返回了一个默认的启动文件夹,从那里您可以重定向到其他地方(或者如果使用 Win OS,则可以使用快捷方式选项)。 - Oleg
添加到@OlegKomarov: 你可以通过调用 which startup.m 测试startup.m文件的位置(顺便说一句:这在路径上的每个函数/文件上都有效)。如果您正在尝试更改内容,则可以快速检查以查看更改是否按预期进行。 - Gunther Struyf
刚在Ubuntu 18.04上安装了Matlab。似乎将$(USER)/Document/MATLAB添加到了路径中。如果这是一般情况,那么将startup.m放在那里似乎是有意义的。 - Guangliang
6个回答

19

我发现最好的方法是这样的。假设你想让MATLAB在mystartupdir中启动,并且你已经将startup.m放在那个目录中。

在Windows上,创建一个MATLAB的快捷图标,然后右键单击它并选择属性。编辑开始位置字段。现在,每当你想要启动MATLAB时,请使用此图标。

在其他平台上,可以使用-sd标志运行MATLAB以指定启动目录:

matlab -sd mystartupdir

如果您没有指定启动目录,MATLAB将使用userpath命令指定的默认目录。你可以在那里放置你的startup.m文件。


6
实际上,“-sd mystartupdir” 参数似乎仅适用于Windows系统。我无法在Mac或Linux上找到相应的等价物。 - kjo
如果您使用了 -useStartupFolderPref 选项,那么这种方法将不起作用。 - scrutari

14
根据文档中的此页面,您应该在“启动目录”中创建自己的startup.m。如果您按照该链接,将会跳转至此页面,其中解释了这种情况下“启动目录”的定义。
您可以使用userpath函数检索此“启动目录”,该函数在我的系统上返回:
>> userpath

ans =

C:\Users\MYUSERNAME\Documents\MATLAB;

个人而言,我只是将快捷方式中的“启动位置”设置为我想要的任何位置 - 但如果您不在Windows上,则显然这种方法行不通;如果您不在Windows上或者不想依赖快捷方式,您应该创建一个startup.m文件,并调用cd函数以进入userpath返回的任何目录。

文档还表示,如果您愿意,可以修改userpath函数或matlabroot/toolbox/local中的matlabrc.m文件(但如果您不是MathWorks工程师或系统管理员,则只能执行后者。否则,MathWorks将会从天而降并炮轰您......)。


1
为了在“正确”的位置创建startup.m,请输入:cd userpath,然后输入edit startup.m并确认您要创建它。 - Dennis Jaheruddin
抱歉晚来一步,但重新查看这个答案后,我找不到文档中说可以修改userpath函数的地方。您能否澄清一下? - kjo
1
@kjo,要修改用户路径位置,请将您想要的路径作为参数提供给函数。例如,userpath('/home/MYUSERNAME/foo/matlab') - SpinUp __ A Davis

7
在Mac OS X上,您可以将startup.m文件放在/matlabrootfolder/toolbox/local/中。例如,对于Matlab 2012,此路径可能如下所示:/Applications/MATLAB_R2012a.app/toolbox/local/
为了防止升级Matlab后文件被删除,您可以使用符号链接到该文件。例如,如果您的启动文件存储在$HOME/myDir/startup.m中(在Bash中):
cd /Applications/MATLAB_R2012a.app/toolbox/local/
ln -s ~/myDir/startup.m .

参考资料:http://www.mathworks.com/help/matlab/matlab_env/startup-options.html


2

这是为Lx用户提供的指针(就像我一开始那样困惑...)。我使用基于Debian的系统,但同样适用于CentOS系统系列等。

  • 检查安装后是否有目录:~/.matlab/<yr_release(s)>
    请注意,您可能会有几个版本,就像我的情况一样。实际上,matlab允许这样做。
  • 创建~/.matlab/startup.m
    顺带一提,我也在那里创建了我的目录Workspace。这完全是可选的
  • 在您的Matlab窗口的主页选项卡中找到菜单项/图标Set Path,单击它并使用左上角的“添加文件夹”按钮添加一个“matlab搜索路径”。将~/.matlab添加为新的搜索路径。更改应立即生效。
  • 重新启动Matlab,以检查~/.matlab/startup.m的内容是否在启动时被正确地考虑。

我讨厌GUI... 我想你可能想知道;-) 希望对你有所帮助。


1
如果你不喜欢GUI界面,你可能会想知道addpath命令后跟着savepath命令可以给你第三个提示相同的效果,而无需进入图形路径管理器 :) - AlexC
这里的关键点是你的 startup.m 文件应该在 Matlab 的 PATH 中。 - scrutari

1

http://fr.mathworks.com/help/matlab/matlab_env/matlab-startup-folder.html#buj_13n 所述:

更改启动文件夹

从R2014b开始,您可以使用“常规首选项”面板更改启动文件夹。在主页选项卡上,在环境部分中,单击“首选项”。选择MATLAB>常规。选择一个选项作为初始工作文件夹。

默认情况下,初始工作文件夹设置为基于MATLAB启动规则的位置。

不过,我希望它不涉及图形桌面界面。通过仔细查看文件 matlab.setting,在Linux下应该位于~/.matlab/<your_release>/,您可以找到以下行:

<key name="UserPath">
    <string>
        <value><![CDATA[<some_directory>]]></value>
    </string>
</key>

在这里,你可以手动指定启动目录。


0

对于我来说(我使用的是Linux),将“startup.m”放到主目录中可以正常工作。显然,主目录默认在matlab路径上。奇怪的是,当我将“startup.m”放入主目录中新创建的“matlab”文件夹(必须全部小写)中时,它也可以正常工作。请告诉我它是否也适用于您的系统。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接