如何更新MATLAB路径?

14

有时当我将新文件添加到我的路径中时,我必须重新启动MATLAB,否则它无法被检测到。一定有其他的方法可以解决这个问题!


你使用的是哪个文件系统?Matlab 依赖于文件系统的变更跟踪来通知它何时有更改。 - Mr Fooz
5个回答

9
我遇到过类似的问题(Matlab不能发现我更改了文件),但很不幸,我不知道是什么原因导致的,也不知道如何解决。通常我会用CLEAR ALL命令来解决这个问题,但请注意它会清除工作空间中的所有变量。一些'Rehash'命令(例如REHASH TOOLBOXRESET)也可能有用。
我希望能看到更好的答案,但我查阅的所有文档都表明这是不可能发生的。

1
如果文件不在matlab/toolbox目录下,rehash或rehash('path')就足够了。 - Mike Katz
1
这就是文档所说的。然而,我记得有一次REHASH无法工作,而REHASH TOOLBOXRESET可以,尽管文件不在工具箱目录中。可能只是巧合,但自从那时起,我一直使用后者选项,因为成本似乎非常小(两个命令都立即返回)。 - Jitse Niesen

3
也许这是Matlab在启动时缓存某些文件以提高性能的问题。这会发生在某些目录中的文件上。
从Matlab中的path命令帮助中得知:
请注意(...)还要注意,在每个MATLAB会话开始时,matlabroot/toolbox目录树中文件的位置会被加载和缓存在内存中,以提高性能。如果你使用外部编辑器将文件保存到matlabroot/toolbox目录中或者使用文件系统操作添加或删除这些目录中的文件,则在使用当前会话中的文件之前,请运行rehash toolbox。如果你使用外部编辑器对matlabroot/toolbox目录中的现有文件进行更改,请在使用当前会话中的文件之前运行清除函数名。有关更多信息,请参阅rehash参考页面或MATLAB桌面工具和开发环境文档中的工具箱路径缓存主题。

2

我经常在网络文件位置上看到这种情况发生。我不明白其机制,但它确实会发生。通常有效的解决方案:

path(path);

或者,如果上述方法无法解决问题,请尝试以下方法:(注意,这将清空您的工作区)

clear classes;
path(path);

我们经常这样做,所以我们将其放在了通用代码路径上的脚本中,称之为:

shazaam;

是的,我的年龄正在显现。


2
你需要使用“rehash”函数或者使用“path(path)”等类似的方式重新设置路径。这也取决于你是否使用了“frozen”路径。请查看ADDPATH的帮助文档。
MATLAB会保留编译好的M文件的缓存副本,除非它知道你已经对其进行了更改。如果你创建了该文件或在MATLAB之外编辑了它,则MATLAB可能不知道它已更改。

0
当我失去网络驱动器连接并恢复时,我会遇到这个问题。运行 rehash 没有效果,但运行 rehash toolboxreset 可以解决问题。

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