http://www.mathworks.com/support/solutions/en/data/1-5YQCPR/index.html?product=ML说:
那么,什么决定了Windows上pathdef.m
文件的位置(matlabroot
与userpath
)?
最佳答案
根据this help page:
但是,显然还有更多。
如果我们在matlabpath
的顶部添加matlabrc.m
,它将在甚至“设置”搜索路径之前告诉使用搜索路径:
MATLABPATH
C:\Program Files (x86)\MATLAB\R2013a\toolbox\local
>>
因此,路径上唯一的是
matlabroot/toolbox/local
,这是MATLAB默认会在其中找到pathdef.m
的地方。正确的?我以为是这样,但是对pathdef.m
中的userpath
进行的简单测试证明,实际上userpath
是pathdef.m
的首要任务。为什么?因为在MATLAB中,工作目录的优先级高于matlabpath
上的任何内容,而启动文件夹由userpath
确定!有multiple ways to specify the startup working directory,有和没有使用
userpath
的功能形式。我刚刚验证过,更改Windows快捷方式的“开始于:”属性将阻止默认pathdef.m
中的userpath
运行。您可以使用userpath(path)
语法在启动文件夹中实现相同的更改,但是除非使用快捷方式“Start in:”方法,否则启动路径和userpath
之间会有什么区别?更令人困惑的是,
pathdef.m
下的默认matlabroot/toolbox/local
的最后一行是p = [userpath,p];
,因此在matlabrc.m
将其添加到启动路径后,如果ther是userpath
下的matlabroot
,则MATLAB将给pathdef.m
优先于userpath
。