尝试谷歌搜索,但找不到任何东西.
我当前的MATLAB文件夹中有一些文件和文件夹.
其中一个文件夹称为"Map",它有一个'map1.m'文件,我想从当前MATLAB文件夹中的代码调用它.
在我的代码中,我不能这样称呼它:
/Map/map1;
Run Code Online (Sandbox Code Playgroud)
但我可以这样做:
cd Map;
map1;
cd ..;
Run Code Online (Sandbox Code Playgroud)
不知何故,上述方法似乎不正确.有更优雅的方式吗?
abc*_*bcd 39
您可以使用命令手动运行该文件而无需手动将文件夹添加到路径中,该run命令专门用于此类情况.从文档:
run是一个便捷函数,它运行当前不在路径上的脚本.
你将你的函数/脚本称为
run /Map/map1
Run Code Online (Sandbox Code Playgroud)
如果只想输入其名称而不是完整(或相对)路径来运行函数/脚本,则应将该文件夹添加到路径中.
如@mutzmatron所述,您不能使用run输入/输出参数调用函数.因此,除非它是没有输入/输出参数的脚本/函数,否则使用run将无法工作,您必须将文件夹添加到路径中.
就像良好的编码实践一样,并且在您的功能具有输入/输出的情况下工作,从路径添加/删除文件夹是正确的方法.所以对于你的情况,
addpath /Map
...
map1;
...
rmpath /Map
Run Code Online (Sandbox Code Playgroud)
重要的是你的函数调用夹在addpath和rmpath命令之间.如果你在两个文件夹中都有相同名称的功能,那么你应该把它夹得更紧,即之前的一行和之后的一行,以避免冲突.
只需将所有这些目录添加到Matlab路径中,addpath就像gnovice建议的那样.然后,您将能够正常调用这些函数,并且它们对于哪些(),help(),depfun()以及其他Matlab元编程命令都是可见的.您可以将addpath()调用放入startup.m文件中,以便在每次启动Matlab时自动显示它们.
每次使用addpath/map1()/ rmpath更改路径都有一些缺点.
使用run()或cd()本身很难看,因为相对路径会有问题.
如果你真的想要分离子目录中的函数,以便它们不能相互"看到",你可以通过在它们的名字前放一个"+"来创建那些目录命名空间,然后使用命名空间限定函数调用,喜欢Map.map1().